我需要在三列上查询具有过滤条件的表:
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
这只是检查第一个条件并忽略第二个条件。
我只是无法理解它:(
我需要在三列上查询具有过滤条件的表:
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
这只是检查第一个条件并忽略第二个条件。
我只是无法理解它:(
从您的问题中不清楚,但您可能需要的只是将括号包裹在您的 OR 条件周围
鉴于下表和行
CREATE TABLE table_a
(
id int primary key,
a_order varchar2(20),
color varchar2(40),
automatic varchar2(10)
)
/
INSERT INTO table_a VALUES (1,'car','red','auto') /
INSERT INTO table_a VALUES (2,'car','red','manual') /
INSERT INTO table_a VALUES (3,'car','blue','auto') /
INSERT INTO table_a VALUES (4,'car','blue','manual') /
INSERT INTO table_a VALUES (5,'truck','red','auto') /
INSERT INTO table_a VALUES (6,'truck','red','manual') /
INSERT INTO table_a VALUES (7,'truck','blue','auto') /
INSERT INTO table_a VALUES (8,'truck','blue','manual') /
此 select 语句将返回记录 2、3 和 4,因为它们都是汽车并且是蓝色或手动的
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND ( a.color != 'red'
OR a.automatic != 'auto' )
另一种选择是使用德摩根定律“析取的否定是否定的合取”来执行以下操作。
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT ( a.color = 'red'
AND a.automatic = 'auto' )
AND 的优先级高于 OR 逻辑运算符。您可以在括号内使用 OR 条件。
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT ( a.color = 'red'
AND a.automatic = 'auto' )