按评级排序的MySql不会选择那些没有评级的人

时间:2018-01-03 17:33:57

标签: mysql

我有两个表(用户和评级),一个包含用户数据(名称,地址等),另一个包含他们的评级。

我想选择用户并按其平均评分从最高到最低排序,所以我使用了这个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的用户。那些从未被任何人评定过的人没有被选中。

我需要每个人都被列出,那些评分最高,最低或没有评分最高的人。

有人知道怎么修理吗?

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;