我有两个表(用户和评级),一个包含用户数据(名称,地址等),另一个包含他们的评级。
我想选择用户并按其平均评分从最高到最低排序,所以我使用了这个sql语句
SELECT user_id,AVG(rating) ave
FROM ratings
WHERE user_id in (SELECT user_id from users)
GROUP BY user_id
ORDER BY ave DESC;
每位用户可以拥有其他用户提供的多个评分,而其他用户可能还没有任何评分。
我看到的是,sql仅选择评级至少为1的用户。那些从未被任何人评定过的人没有被选中。
我需要每个人都被列出,那些评分最高,最低或没有评分最高的人。
有人知道怎么修理吗?
答案 0 :(得分:0)
您应该在此类查询中使用联接。
SELECT u.user_id,AVG(rating) ave
FROM users u
LEFT JOIN ratings r ON u.user_id = r.user_id
GROUP BY u.user_id
ORDER BY 2 DESC;