0

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

0 回答 0