Từ mã giả của bạn, tôi đoán rằng bạn muốn kiểm tra xem danh sách giá trị (động) có phải là tập hợp con của danh sách khác được cung cấp bởi SELECT
không . Nếu có, thì toàn bộ bảng sẽ được hiển thị. Nếu không, sẽ không có hàng nào được hiển thị.
Đây là cách để đạt được điều đó:
SELECT *
FROM tb_values
WHERE
( SELECT COUNT(DISTINCT value)
FROM tb_value
WHERE isgoodvalue = true
AND value IN (value1, value2, value3)
) = 3
ĐÃ CẬP NHẬT sau lời giải thích của OP:
SELECT *
FROM project
JOIN
( SELECT projectid
FROM projectTagMap
WHERE isgoodvalue = true
AND tag IN (tag1, tag2, tag3)
GROUP BY projectid
HAVING COUNT(*) = 3
) AS ok
ON ok.projectid = project.id