Re: Unable to identify an ordering operator
От | Tom Lane |
---|---|
Тема | Re: Unable to identify an ordering operator |
Дата | |
Msg-id | 8413.978283039@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Unable to identify an ordering operator (Ferruccio Zamuner <nonsolosoft@diff.org>) |
Список | pgsql-sql |
Ferruccio Zamuner <nonsolosoft@diff.org> writes: > select persons.name,firm.name,persons.tel > from persons,work,firm > where (persons.table_owner=0) and > (work.id_firm=firm.id and work.id_person=persons.id) > union > select persons.name,firm.name,persons.tel > from persons,work,firm > where (persons.table_owner=1) and > (work.id_firm=firm.id and work.id_person=persons.id); > ERROR: Unable to identify an ordering operator '<' for type '_text' UNION is defined to eliminate duplicate rows, so it has to be able to sort and compare rows, which means it needs < and = operators for each selected column's datatype. Evidently one of the name or tel columns is declared as array of text ('_text' means text[]), for which there is no '<' operator. You could probably make one if you were intent on it (see contrib/array for some inspiration). A lazier way out is to use UNION ALL, which doesn't try to eliminate duplicates. regards, tom lane
В списке pgsql-sql по дате отправления: