0

現在のユーザー ID (この例では orig.id_user = 6) と同じ性別 ID を持つ 3 つのランダムな一意のプロファイルと、それぞれのレビューを取得しようとしています。

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