2012-05-10 52 views
1

我有一個表,例如,有IDName選擇DISTINCT,其中不爲空的MySQL

有多行包含空白名稱,但也可以有多行具有相同名稱。我想選擇所有ID s,只計算一次每個名稱(DISTINCT),但選擇所有空白。

以下查詢自然只會選擇一個空白名稱。 如何選擇所有不同的名稱加上所有的空白名稱?

SELECT DISTINCT Name, ID 
FROM TestTable 

回答

6
SELECT DISTINCT Name, ID FROM TestTable where Name <> '' 
union all 
SELECT Name, ID FROM TestTable where Name = '' 
+0

你能解釋一下'<>'?我可以理解,但希望看到一個書面解釋=) –

+1

@John在許多編程語言中,不等於',與'!='相同 –

+0

是兩個查詢的聯合是實現此目的的唯一方法嗎? –

1

只有輕微的改善,我能想到的是:

SELECT DISTINCT Name, ID FROM TestTable where Name <> '' 
union all 
SELECT '', ID FROM TestTable where Name IS NULL OR Name = ''