評価が10を超える投稿が少なくとも1つあるすべてのユーザーを検索するには、次を使用します。
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTSはその中のSELECTステートメントを気にしません-NULLを1/0に置き換えることができます。これにより、ゼロ除算の数学エラーが発生するはずです...しかし、EXISTSはでのフィルタリングのみに関係するため、そうではありません。 WHERE句。
相関(WHERE p.user_id =u.id)は、これが相関サブクエリと呼ばれる理由であり、評価の比較に加えて、id値が一致するUSERSテーブルからの行のみを返します。
EXISTSは、状況に応じて、基準が満たされるとすぐにtrueを返すため、より高速になります。重複は関係ありません。