我正在尝试获取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