MySQL - 通过投票订购图像

Mar*_*oso 0 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
Run Code Online (Sandbox Code Playgroud)

使用选民ID返回所有图像.如果图像有多个投票,则不止一次返回.

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

sge*_*des 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
Run Code Online (Sandbox Code Playgroud)

正如所建议的那样,你没有GROUP BYMySQL中的所有输出字段 - 只需使用你的唯一标识符,在本例中是i.id.

  • +1,但为什么在这么多列上使用group by?建议只使用`group by i.id` (2认同)