3つの列にフィルタリング条件があるテーブルをクエリする必要があります。
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
これは最初の条件をチェックし、2番目の条件を無視します。
頭が回らない:(
3つの列にフィルタリング条件があるテーブルをクエリする必要があります。
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
これは最初の条件をチェックし、2番目の条件を無視します。
頭が回らない:(
あなたの質問からは明らかではありませんが、おそらくあなたが必要とするのはあなたのOR状態の周りにparensをラップすることです
この次の表と行を考えると
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' )
もう1つのオプションは、ド・モルガンの法則「論理和の否定は否定の論理積です」を使用して次のことを行うことです。
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' )