2014-09-28 3 views
2

ПРИМЕЧАНИЕ Мои значения были фактически пустые строки не имеет значения.MySql: ORDER BY ASC, Nulls внизу

Я хочу отсортировать мой альбом Альбом ASC с нулями в конце. Я обнаружил, что каждая запись переполнения стека не работает в моей базе данных.

После не работает:

  • ВЫБРАТЬ альбом песен ORDER BY ISNULL (альбом, '1')
  • ВЫБРАТЬ альбом песен ORDER BY Альбом NULLS ПОСЛЕДНИЙ
  • ВЫБЕРИТЕ альбом песен ЗАКАЗАТЬ по альбому IS NULL
  • SELECT, альбом песен ORDER BY DESC -Album
  • SELECT, альбом песен ORDER BY ISNULL (Альбом), Альбом ASC
  • SELECT, альбом песен ORDER BY ISNULL (Альбом)
  • SELECT, альбом песен ORDER BY (случай, когда Альбом IS NULL, то 1 ELSE 0 END), Альбом
  • выбора альбома из песни ORDER BY ISNULL (альбом), альбом;
  • ВЫБРАТЬ альбом песен ORDER BY случае, когда альбом является нулевым, то 2 еще один конец, Альбом
+0

эти действительно нулевые значения? –

+0

Как я могу проверить, являются ли они пустыми? есть ли разница между этим "" и null? – rez

+0

см. Http://stackoverflow.com/questions/13542065/is-better-use-an-empty-value-as-a-or-as-null –

ответ

1
select album from songs ORDER BY CASE WHEN album IS NULL THEN 1 WHEN album= '' THEN 2 ELSE 3 END DESC, album ASC 

Он будет заботиться о пустой строке, а

+0

http://i.gyazo.com/0d08af7e51d8858181f39774c023eacb .png это то, что я получаю – rez

+0

Вы уверены, что значения NULL, а не пустая строка? Чтобы отсортировать пустые строки в последний раз, укажите «порядок, когда альбом =», а затем еще 1 конец 0, альбом –

+0

точно такой же результат – rez

1

Глядя на ваш вывод, Я считаю, что вы путаете нуль и пустую строку.

Select case when album is null then 'NULL' 
     when album = '' then 'string.empty' 
     Else album end as Album 
From song 
Order by case when album is null then 2 
     when album = '' then 1 
     Else 0 end, album 

http://sqlfiddle.com/#!2/84541/3

+0

вы уверены, что набрали это право?я не получаю никакого результата – rez

+0

@shiro, у него была опечатка, но это не должно приводить к отсутствию результатов, это должно привести к ошибке. Если у вас нет результата, у вас возникнут другие проблемы. – jmoreno

+0

его потому, что я запускаю sql-запросы на моем собственном сайте php, который не распознает ошибки – rez

0

Может рассмотреть ORM для PHP? Доктрина или Пропель, есть много вкусов. Все еще создавая SQL вручную, почему?

Но ваша проблема с NULL не решена с помощью ORM.

Почему бы не установить ограничение на этой колонке:

NOT NULL DEFAULT '' 
Смежные вопросы