Упорядочение по полям в дополнение к группировке в MYSQL - Могу ли я использовать условные операторы в SQL? - PullRequest
0 голосов
/ 06 октября 2009

У меня сейчас есть база данных с одной таблицей, которая содержит следующие поля:

имя, Люкс

Это моя первая совместная реализация базы данных для отслеживания тестов, и я понимаю, что способ их хранения неэффективен, но, как я уже сказал, это мой первый раунд этого.

Некоторые из имен принадлежат люксам, а некоторые - нет.

Предположим, что данные выглядят так:

Name | Suite
ggg | NULL
aaa | NULL
ddd | a_suite
fff | a_suite
ccc | some_suite
eee | some_suite
bbb | NULL

ЭСТ ..

Если я введу следующую команду:

select distinct name,suite from webpagetest order by name,suite

Тогда я получаю результаты, которые выглядят так:

Name | Suite
aaa | NULL
bbb | NULL
ccc | some_suite
ddd | a_suite
eee | some_suite
fff | a_suite
ggg | NULL

Однако то, что я пытаюсь сделать, это сначала упорядочить результаты по комплекту, а затем, если поле комплекта не равно нулю, используйте поле комплекта, чтобы расположить их по алфавиту. Если suite имеет значение null, разместите их в алфавитном порядке по имени. Итак, результаты должны выглядеть так:

aaa | NULL
ddd | a_suite
fff | a_suite
bbb | NULL
ggg | NULL
ccc | some_suite
eee | some_suite

В этом случае он организуется по столбцу имени, если в столбце набора ничего нет, и если набор не равен нулю, то вместо него будет использоваться значение набора.

Надеюсь, это не слишком плохо написано, и кто-то может понять, о чем я здесь спрашиваю.

Спасибо! Мэтью

1 Ответ

0 голосов
/ 06 октября 2009

Используйте COALESCE . Возвращает первое ненулевое значение заданных параметров.

SELECT name, suite 
FROM webpagetest 
ORDER BY COALESCE(suite,name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...