2012-05-01 4 views

答えて

6

あなたの質問から、その明確ではないが、あなたはおそらく必要なのは、この次のテーブルと行を考えると、あなたの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') 

Demo

別のオプション「和の否定は、否定の論理積である。」De Morgan's lawを使用して次の操作を実行することである

SELECT * 
FROM table_a a 
WHERE a.a_order = 'car' 
    AND NOT (a.color = 'red' 
      AND a.automatic = 'auto') 

Demo

+0

何とかそのが機能していない、私はこれを試みたが、HTEのクエリは、ちょうどそれがあった理由 – sandy

+1

は、あなたがそれを –

+0

MOT状態で動作するはずTHXが、わからないを示してSQLのフィドルを作成することができます赤!第一を検証し、オフに動作しますここでは働いていない。私はちょうどそこにサブクエリを作成し、それから作業を開始しました – sandy

2

優先順位のよりも高くなっていますOR論理演算子。括弧内にOR条件を使用できます。

SELECT * 
    FROM table_a a 
WHERE a.a_order = 'car' 
    AND NOT (a.color = 'red' 
     AND a.automatic = 'auto') 
関連する問題