2017-01-30 33 views
2

我的問題是,如果我有兩個表格和三個條件,在Table1中,我必須檢查兩個條件,在表2中,我只需檢查一個條件,但比較Table2中的另一個原始值以Table1爲例。基於幾個表格和條件的SQL語句

SELECT CUSTOMER_ID FROM Table1 WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2'; 
SELECT CUSTOMER_ID FROM Table2 WHERE Column_name3 IS NOT NULL; 

所以我試圖創造1個SQL代碼出這個2的,所以它會檢查表和返回值,其中至少一個條件將是真實的。它應該顯示CUSTOMER_ID表的值。

我已經試過這樣的事情

SELECT CUSTOMER_ID 
FROM Table1 
WHERE Column_name1 = 'condition1' or Column_name2 = 'condition2' 
INNER JOIN Table2 
ON Column_name3 IS NOT NULL 
WHERE Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 

,但我很新的在這一領域讓我們說,我真的不明白爲什麼它不工作。

期望的結果應該是,如果任何一個條件都是真的,那麼它將返回CUSTOMER_ID,但可能發生的一個CUSTOMER不僅有一個是真實的,但也許所有的條件都是真的,所以我只需要列出一次客戶的ID。

如果我應該給予更多的澄清,請讓我知道。

感謝您提前給予的幫助。

+1

在文檔中查找'union'。 –

+0

你的問題並不完全清楚。不要用_describing_你的問題,_show us_樣品表數據和預期的輸出。 –

+0

ON用於連接條件,即Table1.CUSTOMER_ID = Table2.CUSTOMER_ID。 WHERE用於「過濾」,例如NOT NULL條件。 – jarlh

回答

1

問題不是很清楚,但它看起來你需要:

SELECT CUSTOMER_ID FROM Table1 
    WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' 
union 
SELECT CUSTOMER_ID FROM Table2 
    WHERE Column_name3 IS NOT NULL; 

join是用來當你需要從兩個(或更多)創建一個結果行來自不同表格的來源行。
union用於需要獲取多個查詢結果的總和時。當union all返回所有結果時,union將僅返回唯一結果。

0

轉到此:

SELECT CUSTOMER_ID 
FROM Table1 
LEFT JOIN Table2 
    On Table1.CUSTOMER_ID=Table2.CUSTOMER_ID; 
WHERE Column_name1 = 'condition1' or Column_name2 = 'Condition2' or Column_name3 IS NOT NULL