获取与当前配置文件匹配的随机配置文件

时间:2013-10-30 23:04:06

标签: sql left-join inner-join cross-join

我正在尝试获取3个随机唯一配置文件,其性别ID与当前用户ID相同(本例中为orig.id_user = 6),以及各自的评论。

SELECT DISTINCT u.id_user, s.review
FROM user AS u
CROSS JOIN user AS orig ON orig.id_sex = u.id_sex
INNER JOIN user_review AS s ON s.id_user_to = u.id_user
WHERE orig.id_user = 6
ORDER BY RAND()
LIMIT 3

不知何故,id_user列显示重复的值。为什么呢?

更新(假设我有id_sex值)

SELECT DISTINCT s.id_user_to, s.id_user_from, s.review
FROM user_review AS s
LEFT JOIN user AS u ON u.id_user = s.id_user_to
WHERE u.id_sex = 2
ORDER BY RAND()
LIMIT 20

但是这仍然会返回id_user_to列中的重复行,因为 DISTINCT ,它们应该是唯一值。

解决方案使用GROUP BY

SELECT us.id_user_to, us.review
FROM user_review AS us
LEFT JOIN user AS u ON u.id_user = us.id_user_to
WHERE u.id_sex = 2
GROUP BY us.id_user_to
ORDER BY RAND()
LIMIT 3

0 个答案:

没有答案