Php SQL-MySql按投票数量选择排名前10的帖子
我有两个表,一个用于图像记录(post),另一个用于likes记录。所以我做了一个从一个表到另一个表的内部连接,因为我需要选择图像以及该特定图像的喜欢程度。但我也需要按喜欢的数量来订购,这样我就可以在网站上制作投票最多的前10张图片,所以我的查询如下:Php SQL-MySql按投票数量选择排名前10的帖子,php,mysql,sql,Php,Mysql,Sql,我有两个表,一个用于图像记录(post),另一个用于likes记录。所以我做了一个从一个表到另一个表的内部连接,因为我需要选择图像以及该特定图像的喜欢程度。但我也需要按喜欢的数量来订购,这样我就可以在网站上制作投票最多的前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_
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
它是有效的,但它只是按标题(字母顺序)对图像进行排序。我想从投票最多的人到投票较少的人
有什么想法吗?在大多数SQL实现中,
groupbycriteria
意味着任何orderby
子句都将被忽略,以支持criteria
所以你可以试试这个:
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
(因为您想要前10名,我不明白您选择了ASC
)如果你愿意,考虑一下这个简单的两步过程:1。如果您还没有这样做,请提供适当的CREATE和INSERT语句(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。@Kevin good!所以你能考虑接受我的答案吗?短暂性脑缺血发作