Sql 如何修复混合和或条件的查询?
我需要在三列上查询具有筛选条件的表:Sql 如何修复混合和或条件的查询?,sql,oracle,boolean-logic,Sql,Oracle,Boolean Logic,我需要在三列上查询具有筛选条件的表: select * from table a where a.order = car and a.color !=red or a.automatic !=auto 这只是检查第一个条件,而忽略第二个条件 我就是想不起来:(你的问题不清楚,但你可能需要的只是把你的身体或状况包起来 给定以下表格和行 CREATE TABLE table_a ( id int primary key, a_order varchar2(2
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
这只是检查第一个条件,而忽略第二个条件
我就是想不起来:(你的问题不清楚,但你可能需要的只是把你的身体或状况包起来 给定以下表格和行
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' )
另一种选择是使用“析取的否定是否定的连词”执行以下操作
你的问题并不清楚,但你可能需要的只是把你的身体或状况包装起来 给定以下表格和行
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' )
另一种选择是使用“析取的否定是否定的连词”执行以下操作
AND的优先级高于OR逻辑运算符。您可以在括号内使用OR条件
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT ( a.color = 'red'
AND a.automatic = 'auto' )
和的优先级高于或逻辑运算符。可以在括号内使用或条件
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT ( a.color = 'red'
AND a.automatic = 'auto' )
不知怎的,它不起作用,我试过了,但查询只验证了1st!red,然后就可以了。你能创建一个SQL提琴来演示它在mot条件下应该可以工作,但不知道为什么它在这里不工作。我只是在那里创建了一个子查询,然后它在+1中开始工作。我对De Morgan之后的查询有强烈的个人偏好已经应用了。不知怎么的,它不起作用,我尝试了这个,但查询只验证了1st!red,然后就可以运行了。你能创建一个SQL提琴来演示它在mot条件下应该可以运行,但不确定为什么它在这里不起作用。我只是在那里创建了一个子查询,然后它在+1中开始工作,我个人非常喜欢它已应用De Morgan之后的查询。