Đây là một bài toán phân chia quan hệ chính xác.
Trong SQL Server, hoạt động tốt
phương thức (giả sử ràng buộc duy nhất trên thẻ post_id,tag
) là
SELECT post_id
FROM post_tags
GROUP BY post_id
HAVING MIN(CASE
WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
ELSE 0
END) = 1
AND SUM(CASE
WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
ELSE 0
END) = 2
Vì vậy, tôi sẽ không loại trừ ý tưởng sử dụng GROUP_CONCAT
trong HAVING
thay vào đó.
HAVING GROUP_CONCAT(DISTINCT Keyword ORDER BY Keyword) = 'clever,interesting'