SELECT u.*
FROM (
SELECT user_id
FROM tag t
JOIN user_has_tag uht
ON uht.tag_id = t.id
WHERE tag_name IN ('apple', 'orange', 'banana')
GROUP BY
user_id
HAVING COUNT(*) = 3
) q
JOIN user u
ON u.id = q.user_id
HAVING COUNT(*)
を削除する 、OR
を取得します AND
の代わりに (これは最も効率的な方法ではありませんが)
3
を置き換える 2
を使用 、3つのタグのうち2つだけが定義されているユーザーを取得します。
= 3
を置き換える >= 2
を使用 、3つのタグのうち少なくとも2つが定義されているユーザーを取得します。