我暂时没有使用纯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的所有图像。如果图像有多个投票,则不止一次返回。
有人可以帮我解决这个问题吗?
答案 0 :(得分:5)
您需要使用COUNT
和GROUP 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
,将排序顺序从最高变为最低。)