我有一个包含列ID
, TYPE
, DATE
, ... 的表,我需要所有数据集TYPE <> 'A'
(案例 1),TYPE = A
如果没有TYPE = B
相同的数据集ID
(案例 2)。第一种情况很容易,所以我想UNION
用来结合第一种和第二种情况。但我不知道如何选择第二种情况。我正在尝试自我连接,例如:
SELECT *
FROM MY_TABLE TAB1
JOIN MY_TABLE TAB2
ON
TAB1.ID = TAB2.ID
AND TAB1.TYPE = 'A'
AND TAB2.TYPE = 'B'
Run Code Online (Sandbox Code Playgroud)
这样我就得到了我不想要的集合。我想我需要一个子查询,但我不知道我应该朝哪个方向工作。
也许是这样的:
SELECT *
FROM MY_TABLE TAB1
WHERE TAB1.TYPE <>'A'
UNION
SELECT *
FROM MY_TABLE TAB1
NOT IN
(SELECT *
FROM MY_TABLE TAB1
JOIN MY_TABLE TAB2
ON
TAB1.ID = TAB2.ID
AND TAB1.TYPE = …
Run Code Online (Sandbox Code Playgroud)