2017-09-25 96 views
0

需要編碼sql以基於組合條件過濾記錄。節目的記錄,如果COLUMN_1是「A」,然後COLUMN_2是「100」,或者如果COLUMN_1是「B」,然後COLUMN_2是「200」sql查詢根據組合條件返回數據

select * 
    from tableTmp 
    where 
name="student" 
and ((column_1="A" and column_2 = "100") OR (column_1="B" and column_2 = "200")) 

時的首要條件是不存在的,它會顯示我們想要的東西。但是如果有第一個條件,那麼column_1 =「C」的數據仍然會顯示,查詢中斷。

你知道爲什麼嗎?

+0

你能顯示樣本數據嗎? – Siyual

+0

*「column_1 ='C'數據仍然會顯示」*是什麼意思?這意味着*「查詢是否被破壞」*?你需要更加清楚,首先展示一些樣本數據和樣本輸出,並向我們解釋輸出中不需要的部分。 – AgapwIesu

+1

'「student」'是列引用,而不是(標準)SQL中的字符串常量。該查詢是無效的標準SQL(除非您有一個名爲「student」的列)。你正在使用哪個DBMS? –

回答

0

使用單引號的文字:

select * 
from tableTmp 
where name='student' 
and (
    (column_1='A' and column_2 = '100') 
OR (column_1='B' and column_2 = '200') 
) 

不過,我看不出「C」的COLUMN_1值可以由該查詢返回。

Nb。如果column_2是數字數據類型,則不要使用單引號。