假设我有一个如下表:
row_id record_id tag_id
1 1 2
2 1 3
3 2 2
4 2 4
5 3 2
6 3 3
我想获得那些他们记录的记录 ID 值为 2 但没有 3,在这种情况下,我想获得记录 ID 2。我只能想到一个带有 3 个选择的 SQL 语句,但它看起来很笨重。有没有更简单、更快的方法来实现这一目标?谢谢。
编辑:
我得到的 SQL:
SELECT record_id
FROM table_A
WHERE record_id NOT IN (SELECT record_id
FROM table_A
WHERE record_id IN (SELECT record_id
FROM table_A
WHERE tag_id = 2)
AND tag_id =3)
AND record_id IN (SELECT record_id FROM table_A WHERE tag_id = 2) GROUP BY record_id
并且每个 record_id 可能有 1 到任意数量的 tag_id 值。