Ошибка PostGres при использовании Distinct: ОШИБКА postgres: не удалось определить оператор упорядочивания для записи типа

** РЕДАКТИРОВАТЬ **

Неважно, просто нужно было снять скобки...

Я получаю эту ошибку: ОШИБКА: не удалось определить оператор упорядочивания для записи типа при попытке использовать DISTINCT

Вот запрос:

select DISTINCT(g.fielda, g.fieldb, r.type) 
from fields g LEFT JOIN types r ON g.id = r.id;

И ошибки:

ERROR:  could not identify an ordering operator for type record
HINT:  Use an explicit ordering operator or modify the query.

********** Error **********

ERROR: could not identify an ordering operator for type record
SQL state: 42883
Hint: Use an explicit ordering operator or modify the query.

person CaffeineIV    schedule 28.03.2010    source источник
comment
Пожалуйста, подумайте о том, чтобы добавить свое решение в качестве ответа, а не редактировать свой вопрос, чтобы другие могли извлечь из него пользу :).   -  person Andrew Aylett    schedule 28.03.2010


Ответы (1)


Как я думаю, вы уже поняли, что вам не нужны круглые скобки после DISTINCT. Похоже, что они должны параметризовать DISTINCT, но на самом деле они служат для того, чтобы запрос возвращал один столбец типа записи вместо нескольких столбцов. Затем оператор DISTINCT пытается работать с записью и обнаруживает, что вы не определили порядок для этой записи.

Если вы хотите, чтобы DISTINCT работал с подмножеством ваших возвращаемых значений, используйте DISTINCT ON.

person Andrew Aylett    schedule 28.03.2010
comment
Да, я разобрался со скобками, но не понял почему, так что спасибо за объяснение! - person CaffeineIV; 28.03.2010