2014-07-22 34 views
2

有人可能會指出我尋求進一步的正確方向或給我任何有關以下任務的提示嗎?MySQL查詢所有與列A不同的列,其中沒有列B中的具體值

我想列出列A中沒有特定值的MySQL表中的所有不同值。我的意思是沒有任何相同的A值在B中具有此特定值有行。以下面的表(讓這個特定的值是1):

column A | column B 
---------------------- 
apple  | 
apple  | 
apple  | 1 
banana | anything 
banana | 
lemon  | 
lemon  | 1 
orange | 

我希望得到以下結果:

banana 
orange 

感謝。

回答

2

這可以幫助你:

SELECT DISTINCT A FROM MY_TABLE 
WHERE A NOT IN (SELECT DISTINCT A FROM MY_TABLE WHERE B = 1) 
+0

這就是我一直在尋找的。謝謝。 – log69

2

由於存在空值,我還在列B中添加了nvl條件。

ORACLE:

SELECT DISTINCT COLUMN_A FROM MY_TABLE 
WHERE COLUMN_A NOT IN (SELECT COLUMN_A FROM MY_TABLE WHERE nvl(COLUMN_B,'dummy') = '1'); 

MYSQL:

SELECT DISTINCT COLUMN_A FROM MY_TABLE 
WHERE COLUMN_A NOT IN (SELECT COLUMN_A FROM MY_TABLE WHERE IFNULL(COLUMN_B,'dummy') = '1'); 
+2

我認爲columnA也打印'蘋果和檸檬' – Sadikhasan

+0

這是行不通的。 – Jens

+0

@Sadikhasan。是啊。我試過,然後將我的查詢改爲第二個查詢。由於有空值,我也添加了一個nvl條件列B –

1
SELECT * FROM your_Table WHERE Column_A NOT IN(
    SELECT Column_A FROM Your_Table WHERE Column_B = '1' 
) 
1

這句話給你預期的結果:

select COLUMNA from myTable where COLUMNA not in (select distinct COLUMNA from myTable where columnB 
=1) group by COLUMNA; 
相關問題