Переупорядочить целое число, кроме значения 0 с sql - PullRequest
6 голосов
/ 07 февраля 2010

Я пытаюсь получить упорядоченный список строк из моей таблицы базы данных MYSQL на основе целочисленного значения 'place'.

SELECT * FROM mytable
ORDER BY place;

Это работает нормально, за исключением того, что все строки со значением place = 0 должны появляться в конце таблицы.

Итак, если мой стол:

name place
---- -----
John 1
Do   2
Eric 0
Pete 2

должно стать:

name place
---- -----
John 1
Do   2
Pete 2
Eric 0

Ответы [ 3 ]

6 голосов
/ 07 февраля 2010
order by case when place = 0 then 1 else 0 end asc, place asc

таким образом вы получаете все ненулевые значения, упорядоченные первыми.

4 голосов
/ 07 февраля 2010
SELECT *
FROM myTable
ORDER BY place>0 DESC, place

- это решение без CASE

2 голосов
/ 07 февраля 2010
SELECT *
FROM myTable
ORDER BY CASE place WHEN 0 THEN 9999 ELSE place END

Этот подход подразумевает, что мы знаем, что 9999 (или какое-либо другое значение) больше, чем все возможные значения в столбце места.

В качестве альтернативы мы можем отсортировать по двум значениям, как в:

   ORDER BY CASE place WHEN 0 THEN 0 ELSE -1 END, place
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...