2015-04-07 38 views
-1

我有2个表:代码和code_likeMYSQL顺序计数

码表

code_id | code_name 
--------------- 
1  | pagination 
2  | function 
3  | script 

code_like表

like_id | code_id(id of code table) 
1  | 3 
2  | 1 
3  | 3 
4  | 2 
5  | 1 
6  | 3 

我想按行排序code table计数code_like

例如:

I want result like 
(1) script  (1st because 3 times in code_like table) 
(2) pagination (2nd because 2 times in code_like table) 
(3) function (3rd because 1 time in code_like table) 
+0

两个表的主键不具有相同的名称。在code_like表中将id更改为c_id。 – user3386779

回答

2

使用的代码数量加入,为了喜欢

select c.* 
from code c 
left join code_like l on c.id = l.code_id 
group by c.id 
order by count(*) desc 

DEMO

2

这里需要COUNT,JOIN和GROUP BY

SELECT c.code_name, count(*) AS rowcount 
FROM code c LEFT JOIN code_like l ON l.code_id = c.id 
GROUP BY c.id 
ORDER BY rowcount DESC 

sqlfiddle

+0

已在答案中添加了一个sqlfiddle – user4035

0

你可以试试这个:

SELECT * 
, (SELECT COUNT(*) FROM code_like WHERE code_like.code_id = code.id) AS like 
FROM code 
ORDER BY (SELECT COUNT(*) FROM code_like WHERE code_like.code_id = code.id) DESC 

OR

SELECT * FROM (SELECT * 
, (SELECT COUNT(*) FROM code_like WHERE code_like.code_id = code.id) AS like 
FROM code 
) AS code_was_like 
ORDER BY like DESC 

我希望这帮助。

+0

您的回答中没有任何命令 – user4035

+0

tq @ user4035提醒我 – starplateena

0
SELECT c . * 
FROM code AS c 
INNER JOIN code_like AS cl ON cl.code_id = c.id 
GROUP BY c.id 
ORDER BY COUNT(cl.code_id) DESC