私は3つの列のフィルタリング条件でテーブルを照会する必要があります。AND条件とOR条件を組み合わせたクエリを修正するにはどうすればよいですか?
select *
from table a
where a.order = car
and a.color !=red
or a.automatic !=auto
これは単に最初の条件をチェックし、二番目のを無視します。
私はちょうどそれのまわりで私の頭を取得することはできません:(
私は3つの列のフィルタリング条件でテーブルを照会する必要があります。AND条件とOR条件を組み合わせたクエリを修正するにはどうすればよいですか?
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')
別のオプション「和の否定は、否定の論理積である。」De Morgan's lawを使用して次の操作を実行することである
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT (a.color = 'red'
AND a.automatic = 'auto')
優先順位のよりも高くなっていますOR論理演算子。括弧内にOR条件を使用できます。
SELECT *
FROM table_a a
WHERE a.a_order = 'car'
AND NOT (a.color = 'red'
AND a.automatic = 'auto')
何とかそのが機能していない、私はこれを試みたが、HTEのクエリは、ちょうどそれがあった理由 – sandy
は、あなたがそれを –
MOT状態で動作するはずTHXが、わからないを示してSQLのフィドルを作成することができます赤!第一を検証し、オフに動作しますここでは働いていない。私はちょうどそこにサブクエリを作成し、それから作業を開始しました – sandy