#sql #sqlite
Здравствуйте! Как составить такой запрос, чтобы сначала шли положительные числа по возрастанию, а потом все отрицательные? (В моей таблице только -1, другие отрицательные числа не нужны) Например, для ряда 4, 3, 5, -1, 8, 2, -1 ORDER BY по столбцу с числами выведет строки, упорядочив их таким образом: -1, -1, 2, 3, 4, 5, 8, а хотелось бы 2, 3, 4, 5, 8, -1, -1, это возможно?
Ответы
Ответ 1
select id from table order by case when id>0 then 0 else 1 end, idОтвет 2
Громоздкий вариант: select /**/ from tablename where num >= 0 order by num union all select /**/ from tablename where num = -1 Минус - громоздко. Плюс - намерение наглядно и не надо сомневаться, что же хотел сделать автор. Для sqlite, наверное, не столь актуально, но так сортировка может работать по индексу. Компактно: select /**/ from tablename order by (num = -1) /*возможно, desc, вечно путаю*/, num Т.е. сначала сортируются по признаку, отрицательное ли число, зачем в каждой группе строки сортируются по num уже независимо.
Комментариев нет:
Отправить комментарий