SQL - MySql选择按投票数量排序的前10个帖子

时间:2016-02-13 17:51:28

标签: php mysql sql

我有两个表,一个用于图像记录(帖子),另一个用于喜欢记录。所以我从一张桌子到另一张桌子进行了内部连接,因为我需要选择图像和特定图像所具有的喜欢的数量。但我还需要按照喜欢的数量订购它们,这样我就可以在网站上排名前10位的投票图像,所以这是我的查询:

SELECT
  COUNT(DISTINCT B.votes),
  A.id_image,
  A.image,
  A.title
FROM likes_images AS B INNER JOIN images AS A ON A.id_image = B.id_image
GROUP BY A.title
ORDER BY COUNT(DISTINCT B.votes) ASC
LIMIT 10

它有效,但它只按标题(按字母顺序排列)排序图像。我想从投票最多到投票少的人那里订购。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在大多数SQL实现中,GROUP BY criterion 暗示任何ORDER BY子句都会被忽略,而不是criterion

所以你可以试试这个:

SELECT L.id_image, A.image, A.title,
  * FROM (
    SELECT COUNT(votes) AS likes, id_image
    FROM likes_images
    GROUP BY id_image
  ) AS L
JOIN images B ON B.id_image = L.id_image
ORDER BY L.likes DESC
LIMIT 10

请注意,我将ORDER BY设置为DESC(因为你想要top10我不明白你选择了ASC)!