如何避免使用子查询
How to avoid using a subquery
这里有一个示例 table :
A | B
----------
DF RUI
EF RUI
AF FRO
EF FRO
我想得到除 WHERE (A = 'EF' AND B = 'RUI') 之外的所有结果,如下所示:
A | B
----------
DF RUI
AF FRO
EF FRO
但是是否可以在没有子查询的情况下执行此操作?
编辑:
我添加了一些额外的结果来显示我想要得到的结果。如果 A = EF 或 B = RUI 我想得到结果但是如果 A = EF AND B = RUI
我不想得到结果
SELECT A, B FROM table WHERE NOT (A = 'EF' AND B = 'RUI')
或
SELECT A, B FROM table WHERE (A <> 'EF' OR B <> 'RUI')
where 子句本质上是一个布尔表达式,因此您可以执行您习惯的任何类型的布尔转换(如果它涉及 NULL 值会稍微复杂一些,我认为这不会是您的示例;如果确实如此,您可能需要添加一些额外的规则或检查 SQLs terinary logic).
下的行为
如果我没听错的话。 . .
select * from your_table
where not (A = 'EF' and B = 'RUI');
只需在where子句前加一个NOT
条件即可:
SELECT A,B FROM table_name
WHERE NOT (A = 'EF' AND B = 'RUI')
Select * from SAMPLETABLE where A <> 'EF' OR B <> 'RUI';
SELECT A, B FROM table WHERE (A = 'EF' XOR B = 'RUI')
这里有一个示例 table :
A | B
----------
DF RUI
EF RUI
AF FRO
EF FRO
我想得到除 WHERE (A = 'EF' AND B = 'RUI') 之外的所有结果,如下所示:
A | B
----------
DF RUI
AF FRO
EF FRO
但是是否可以在没有子查询的情况下执行此操作?
编辑:
我添加了一些额外的结果来显示我想要得到的结果。如果 A = EF 或 B = RUI 我想得到结果但是如果 A = EF AND B = RUI
我不想得到结果SELECT A, B FROM table WHERE NOT (A = 'EF' AND B = 'RUI')
或
SELECT A, B FROM table WHERE (A <> 'EF' OR B <> 'RUI')
where 子句本质上是一个布尔表达式,因此您可以执行您习惯的任何类型的布尔转换(如果它涉及 NULL 值会稍微复杂一些,我认为这不会是您的示例;如果确实如此,您可能需要添加一些额外的规则或检查 SQLs terinary logic).
下的行为如果我没听错的话。 . .
select * from your_table
where not (A = 'EF' and B = 'RUI');
只需在where子句前加一个NOT
条件即可:
SELECT A,B FROM table_name
WHERE NOT (A = 'EF' AND B = 'RUI')
Select * from SAMPLETABLE where A <> 'EF' OR B <> 'RUI';
SELECT A, B FROM table WHERE (A = 'EF' XOR B = 'RUI')