0

我已经有一段时间没有使用纯 mySQL 了,看起来我忘记了。悲剧。现在我有 2 张桌子 - 图片和投票。图像具有唯一的 ID,等等。投票表只有 2 个字段 - 图像 ID 和用户 ID。

我正在尝试获取按票数排序的图像列表,但我有点卡在这里。我得到的最接近的是:

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, v.uid
FROM images as i
LEFT JOIN
votes as v ON i.id = v.iid

它返回所有带有选民 ID 的图像。如果一张图片有多个投票,那么它会被多次返回。

有人可以帮我解决这个问题吗?

4

2 回答 2

5

您需要使用COUNTGROUP BY

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, COUNT(v.uid)
FROM images as i
    LEFT JOIN votes as v ON i.id = v.iid
GROUP BY i.uname, i.title, i.time, i.description, i.id, i.extension
ORDER BY Count(v.uid) DESC

正如建议的那样,您不必GROUP BY在 MySQL 中使用所有输出字段 - 只需使用您的唯一标识符,在本例中为 i.id。

于 2013-02-14T12:30:59.327 回答
0

尝试:

SELECT i.uname AS author, i.title, i.time, i.description, i.id, i.extension, count(*) votes
FROM images as i
LEFT JOIN votes as v ON i.id = v.iid
group by i.id
order by 7

(from lowest to highest - add desc after order by 7 to change the sort order to be from highest to lowest.)

于 2013-02-14T12:31:53.203 回答