可能的简单 SQL 查询

Possible simple SQL Query

我觉得自己很傻,因为这应该有一个简单的答案。也许我需要更多的咖啡。

想象一下下面的 Oracle table:

Row ID1 ID2
1 B B
2 B A
3 C A
4 C B
5 D A
6 D B
7 E A

如何 select 除了 ID1 = E 之外的所有行,以及 ID2 = A 和 ID1 = B 或 C 的行(意味着我想要所有ID1 = D,但对于 ID1 = B 或 C,删除 ID2 = A)。 我可以用很多 OR 来做,但是有更好的方法吗?

How can I select all the lines except ID1 = E, and the ones with ID2 = A and ID1 = B or C (

这是布尔逻辑。您可以使用:

where not (id1 = 'E' or (ID2 = 'A' and ID1 IN ('B', 'C')))