MySQL: упорядочить по полю, поместив пустые ячейки в конце - PullRequest
37 голосов
/ 29 апреля 2011

У меня есть таблица MySQL, которая содержит ряд продуктов. Я хочу отсортировать таблицу по одному конкретному столбцу (большинство значений начинаются с цифр, например: 1-й, 2-й) и т. Д. Однако, поскольку некоторые записи не имеют значения для этого столбца, при попытке сортировки , таблица автоматически помещает пустые строки в первую очередь.

Я ищу способ сортировки строки по возрастанию, но вставляю пустые записи только в конце отсортированных записей, если это имеет смысл?

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

73 голосов
/ 29 апреля 2011
select * from table
order by if(field = '' or field is null,1,0),field
5 голосов
/ 19 июля 2018

Это один из самых эффективных методов

ASC Заказ

SELECT * FROM user ORDER BY name IS NULL, name ASC

Ожидаемый результат:

+----+--------+------------+
| id |  name  | date_login |
+----+--------+------------+
|  3 |  david | 2016-12-24 |
|  2 |  john  | NULL       |
|  4 |  zayne | 2017-03-02 |
|  1 |  NULL  | 2017-03-12 |

DESC Заказ

SELECT * FROM user ORDER BY name IS NULL, name DESC

Ожидаемый результат:

+----+--------+------------+
| id |  name  | date_login |
+----+--------+------------+
|  4 |  zayne | 2017-03-02 |
|  2 |  john  | NULL       |
|  3 |  david | 2016-12-24 |
|  1 |  NULL  | 2017-03-12 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...