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
Bằng cách xóa HAVING COUNT(*)
, bạn nhận được OR
thay vì AND
(mặc dù nó sẽ không phải là cách hiệu quả nhất)
Bằng cách thay thế 3
với 2
, bạn có được những người dùng có chính xác hai trong ba thẻ được xác định.
Bằng cách thay thế = 3
với >= 2
, bạn có được những người dùng có ít nhất hai trong ba thẻ được xác định.