Machez
@Machez
Бу!

Как в PosgreSQL выполнить сортировку по полю при использовании DISTINCT?

Имеется запрос:
SELECT DISTINCT field_1, field_2 FROM table_1 ORDER BY field_3

Он завершается ошибкой:
SQLSTATE[42P10]: Invalid column reference: 7 ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list

Как я понял суть проблемы в том, что сортировку можно выполнять только по полю, которое перечислено в DISTINCT. Это можно как-то обойти?
  • Вопрос задан
  • 2462 просмотра
Решения вопроса 1
А как вы себе представляете сортировку по полю, которое отсутствует?
Вот у вас есть табличка
name   value
aaa    111
aaa    222
bbb    156

Вы делаете
SELECT DISTINCT name FROM table_1 ORDER BY value;

в каком порядке должна произойти расстановка aaa и bbb? что больше {111; 222} или {156}?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
romy4
@romy4
Exception handler
Чтобы сортировать по полю, надо сперва выбрать поле, а оно у вас не выбрано © матроскин
используйте группировку

а вообще SELECT DISTINCT ON(field_1, field_2), field_3 FROM table_1 ORDER BY field_3
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы