订购前十个查询

时间:2011-05-10 15:13:27

标签: mysql group-by sql-order-by

感谢阅读。

我正在尝试编写一个查询,列出使用两个表收到最多票数的人的姓名:

-------
votes
-------
vote_id, giver_user_id, receiver_user_id, datetime

等。

-------
users
-------

user_id, name, surname

等...

到目前为止,我有:

$top_query = "SELECT * FROM vote, user WHERE vote.receiver_user_id = user.user_id GROUP BY receiver_user_id  ";

这种作品,但它没有列出列表顶部投票最多的用户。

我如何以这种方式订购?

谢谢。

OP

3 个答案:

答案 0 :(得分:4)

SELECT  u.*, COUNT(vote_id) AS votes_count
FROM    users u
LEFT JOIN
        votes v
ON      v.receiver_user_id = u.user_id
GROUP BY
        u.user_id
ORDER BY
        votes_count DESC

答案 1 :(得分:1)

您可以使用ORDER BY子句。 使用关键字“asc”或“desc”

类似的东西:

ORDER BY vote_count DESC

Mysql参考:

http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html

答案 2 :(得分:0)

这将按接收者分组并按投票顺序排列:

    select receiver_user_id, count(1) vote_count
      from vote, user 
     where vote.receiver_user_id = user.user_id 
  group by receiver_user_id 
  order by 2 desc