2012-05-10 4 views
1

У меня есть таблица, которая имеет, например, ID и Name.Выбор DISTINCT, где не null в 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 = '' 
Смежные вопросы