2012-05-01 42 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

不知何故它不工作,我試過,但興田查詢只是驗證1!紅色和 – sandy

+1

您可以創建一個演示它 –

+0

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')