powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ORDER BY хитрый
11 сообщений из 11, страница 1 из 1
ORDER BY хитрый
    #34370048
DeWiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Есть таблица с числовым полем.
Делаем селект типа

Код: plaintext
SELECT * FROM table ORDER BY field

Выводит все замечательно, числа идут по возрастанию.
Вопрос, можно ли изменить синтаксис ORDER BY так, чтобы сначала вывелись все значения больше нуля, а за ними нулевые значения.
Сам селект менять нельзя, т.е. решение типа

Код: plaintext
1.
2.
SELECT ... WHERE field >  0  ...
UNION
SELECT ... WHERE field =  0  ...

не подходит.
Можно модифицировать только часть ORDER BY.
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370074
DeWiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С UNION я перемудрил, он тут не причем.
Мне удалось получить результат только так

Код: plaintext
1.
2.
SELECT *, CASE WHEN field >  0  THEN  0  ELSE  1  END as sort
FROM table
ORDER BY sort,field

Но так надо менять сам селект, т.е. добавить в него виртуальное поле. По условиям задачи этого делать нельзя.
Задача имеет решение с такими условиями?
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370076
Vladimir Sitnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем не понравилось просто
Код: plaintext
1.
2.
SELECT *
FROM table
ORDER BY CASE WHEN field >  0  THEN  0  ELSE  1  END, field
?
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370087
q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
q
Гость
Vladimir SitnikovА чем не понравилось просто
Код: plaintext
1.
2.
SELECT *
FROM table
ORDER BY CASE WHEN field >  0  THEN  0  ELSE  1  END, field
?

А сортировать по убыванию не пробовал? Например:
Код: plaintext
SELECT * FROM table ORDER BY field DESC
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370091
DeWiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir SitnikovА чем не понравилось просто
Код: plaintext
1.
2.
SELECT *
FROM table
ORDER BY CASE WHEN field >  0  THEN  0  ELSE  1  END, field
?

спасибо, не знал, что синтаксис позволяет CASE использовать и в ORDER
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370092
DeWiL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q Vladimir SitnikovА чем не понравилось просто
Код: plaintext
1.
2.
SELECT *
FROM table
ORDER BY CASE WHEN field >  0  THEN  0  ELSE  1  END, field
?

А сортировать по убыванию не пробовал? Например:
Код: plaintext
SELECT * FROM table ORDER BY field DESC


видимо ты не понял задачу...
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370581
q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
q
Гость
Вопрос, можно ли изменить синтаксис ORDER BY так, чтобы сначала вывелись все значения больше нуля, а за ними нулевые значения.

А когда сортируешь по убыванию, нулевые значения разве не выводятся в конце?
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34370647
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q Вопрос, можно ли изменить синтаксис ORDER BY так, чтобы сначала вывелись все значения больше нуля, а за ними нулевые значения.

А когда сортируешь по убыванию , нулевые значения разве не выводятся в конце?Таки человеку нужно сортировать по возрастанию, но так, что бы нулевые значения были в конце :)
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34391743
av1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
элегантнее будет: SELECT * FROM table ORDER BY field = 0;
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34393991
av1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
av1985элегантнее будет: SELECT * FROM table ORDER BY field = 0;

Пардон, SELECT * FROM table ORDER BY field = 0,field;
...
Рейтинг: 0 / 0
ORDER BY хитрый
    #34394134
Poligon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если оч. хочется можно написать свой оператор и делать ORDER BY используя его:

Код: plaintext
1.
2.
3.
....
ORDER BY
  myfield using operator(myschema.myoperator)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ORDER BY хитрый
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]