2

後で表示される重複 (rationalこの場合は順) はすべて削除する必要があります。ただし、次のクエリは機能しません。

 SELECT DISTINCT ON(postcards.id) postcards.id, postcards.title, rational
 FROM
 (
 SELECT postcards.id, postcards.title,
 some_complex_condition as rational
 FROM postcards
 ORDER BY rational
 ) as postcards

注文に依存することを望みましたが、そうではありません。に優先順位を設定する必要があるようDISTINCT ONです。でできPostgresqlますか?

4

1 に答える 1

4

distinct onin内で列を使用する必要がありますorder by

select distinct on (postcards.id)
    postcards.id, postcards.title, rational
from
(
    select
        postcards.id, postcards.title,
        some_complex_condition as rational
    from postcards
) as postcards
order by postcards.id, rational

PostgreSQLのドキュメントから:

DISTINCT ON 式は、一番左の ORDER BY 式と一致する必要があります。通常、ORDER BY 句には、各 DISTINCT ON グループ内の行の優先順位を決定する追加の式が含まれます。

したがって、は次のdistinct on順序で並べられたレコードセットを使用id, rationalし、それぞれのレコードセットの最初のレコードを取得しますid

于 2013-09-01T15:56:23.770 に答える