我有两个表,一个用于图像记录(帖子),另一个用于喜欢记录。所以我从一张桌子到另一张桌子进行了内部连接,因为我需要选择图像和特定图像所具有的喜欢的数量。但我还需要按照喜欢的数量订购它们,这样我就可以在网站上排名前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
它有效,但它只按标题(按字母顺序排列)排序图像。我想从投票最多到投票少的人那里订购。
有什么想法吗?
答案 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
)!