MySQL - 通过投票订购图像

时间:2013-02-14 12:29:02

标签: mysql

我暂时没有使用纯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的所有图像。如果图像有多个投票,则不止一次返回。

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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

(从最低到最高 - 在desc之后添加order by 7,将排序顺序从最高变为最低。)