2015-09-18 3 views
2

это MYTABLE показать все строки с order by no asc,Порядок заказа Sql с условием?

enter image description here

Мой вопрос, я хочу, чтобы показать все строки с обычаем order by, в части первой строки являются, которые имеют одни и те же данные, что и текущая дата (use 2015-09-18 в качестве текущей даты), после этого, пожалуйста, настройте строки на основе наименьшего числа, поэтому результат после пользовательского order by станет сортировкой из 5,4,1,2,3.

Как я понимаю, что с sql-заявлением? спасибо.

+1

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

+0

Таким образом, заказ: 1. текущая дата сначала, а затем все остальные даты. 2. в течение текущего дня порядок по времени восходящего («нет» здесь не имеет значения) 3. в течение других дат порядок «нет» нисходит (дата/время здесь не имеет значения). Да? –

ответ

3
SELECT * 
FROM table 
ORDER BY 
    CASE 
     WHEN date(date) = curdate() THEN no * (-1) -- when date is current date, sort descending (ascending by negative ID, to reverse order) 
     ELSE no -- else keep default ascending sort order 
    END 
+0

спасибо за быстрый ответ, это я искал. – ltvie

+0

извините, этот sql работает правильно, но у меня есть вопрос, который все еще основывается на вопросе выше, я хочу сортировать, становясь 4,5,1,2,3. как я этого добиваюсь? – ltvie

+0

Сортировать по 2 вещи: case, когда дата (дата) = curdate() then 1 else 0 end desc, no desc – AdrianBR

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