2016-06-15 3 views
1

я имею таблицу с 2 столбцами, которые содержат текст или просто 1SQL заказ на 2 колонки

Я хочу, чтобы выполнить простой SELECT * FROM запрос на стол и порядке 2 столбцами

Некоторые строки будут есть один столбец пустой и другие не будут иметь каких-либо столбцов пустым, но я хочу, чтобы отобразить строки либо с одной или обеих колонок, содержащих текст в нижней части моих результатов

образец данных:

sequence = 1 
col1 = 'hello' 
col2 = 'hello' 

sequence = 2 
col1 = '' 
col2 = '' 

sequence = 3 
col1 = 'hello' 
col2 = '' 

поэтому приведенные выше данные должны отображаться в порядке (по последовательности):

2 
3 
1 
+0

Если вы имели последовательность = 3, col1 = '', Col2 = 'привет', где следует, что появляются в последовательности результатов – PaulF

ответ

4

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

order by ((col1 = '') + (col2 = '')) desc 

Это подсчитывает число значений.

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

order by ((col1 is null) + (col2 is null)) desc 

Оба они используют функцию MySQL, что логическое выражение трактуется как целое число в числовом контексте, с 1 для true и 0 для false.

-1

Вы можете просто сделать SELECT * FROM tbl ORDER BY col1, col2 ASC/DESC;.

1

Вам необходимо условное упорядоченность:

SELECT * FROM YourTable t 
ORDER BY CASE WHEN t.col1 = '' THEN 1 ELSE 0 END + 
     CASE WHEN t.col2 = '' THEN 1 ELSE 0 END DESC, 
     t.col1,t.col2 
0
SELECT * 
FROM table 
ORDER BY 
     col1 ASC 
     , col2 ASC 

вы могли бы даже ограничить его

SELECT * 
FROM table 
ORDER BY 
     col1 ASC LIMIT 3 
     , col2 ASC LIMIT 3 
Смежные вопросы