2015-09-19 6 views
0

У меня есть таблица, в которой есть 3 поляИндивидуальный заказ на в MySQL

 
+------+------+------+ 
| name | type | rank | 
+------+------+------+ 
| abc | A | 1 | 
| def | B | 1 | 
| ghi | A | 2 | 
| jkl | C | null | 
| mno | B | 2 | 
| pqr | C | 1 | 
+------+------+------+ 

Как сортировать эту таблицу сначала по типу (А затем B, то C), то по рангу в порядке возрастания? Так что ранг с нулем приходит после ранга> 0?

+0

SELECT * из таблицы ORDER BY type, rank ASC; –

+0

нуль выходит за нумерованные данные, и мне это нужно, наконец – ashishkumar148

+0

select & sort, где rank не равен null, тогда объединение с select, где rank равно null – lboshuizen

ответ

1

Вы можете использовать CASE выражения в ORDER BY:

SELECT * 
FROM YourTable 
ORDER BY type 
     ,CASE WHEN rank IS NULL THEN 1 ELSE 0 END 
     ,rank 

Демо: SQL Fiddle

Вы также можете использовать:

SELECT * 
FROM YourTable 
ORDER BY type 
     ,COALESCE(rank,999999) 

Но тогда вы должны выбрать номер поля может никогда не выше, первый метод устраняет эту догадку.

Смежные вопросы