Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何修复混合和或条件的查询?_Sql_Oracle_Boolean Logic - Fatal编程技术网

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之后的查询。