怎么写这个sql

时间:2009-08-10 08:59:30

标签: sql mysql

我正在使用mysql

有两个表

表决

app_id user_id
2      1
3      1
2      2

应用

id title content
1  xx    xxxx   
2  yy    yyyy
3  zz    zzzz 

我想按用户投票的次数对app表进行排序。在这个例子中,结果应该是

id title content
2  yy    yyyy
3  zz    zzzz
1  xx    xxxx

任何建议?

2 个答案:

答案 0 :(得分:3)

select app.id, app.title, count(*) as votes
from app
left join vote on app.id = vote.app_id
group by app.id, app.title
order by votes desc

当你不想在输出中有投票数时,你也可以这样做(在sql server中它是可能的,所以我相信它应该可以在mySql中,但我还没有测试过因为我这里没有MySQL。)

select app.id, app.title
from app
left join vote on app.id = vote.app_id
group by app.id, app.title
order by count(*) desc

答案 1 :(得分:2)

对来自app表的数据进行分组以获得投票数,并使用投票表上的左连接来获取没有投票的应用程序:

select app.id, app.title, app.content
from app
left join vote on vote.app_id = app.id
group by app.id, app.title, app.content
order by count(vote.app_id) desc