2017-12-07 5 views
0

問合せ:DISTINCT ON式はなぜ機能しませんか?

SELECT DISTINCT ON (geom_line),gid 
FROM edge_table; 

私は重複を含まエッジテーブルを持っていると私はそれらの1を維持重複エッジを削除したいのですが、構文自体が間違っていますか?

+1

'DISTINCT ON(geom_line)geom_line、gid FROM edge_table;'読み取り:http://www.postgresqlforbeginners.com/2010/11/sql-distinct-distinct-on-and-all.html – aaa

答えて

1

コンマが問題です。

あなたが結果に含まgeom_lineをしたい場合は、

SELECT DISTINCT ON (geom_line) gid FROM edge_table; 

を使用エルス

SELECT DISTINCT ON (geom_line) geom_line, gid FROM edge_table; 

使用しかし、あなたの目的は、重複を削除するだけであれば、私はあなたが使用する必要があることを言うだろう

SELECT DISTINCT geom_line, gid FROM edge_table; 

DISTINCTは、結果全体にわたって一意性を保証するtであり、一方、DISTINCT ONは、カッコ内の式に対して一意性を保証します。カッコ内の式が同一である行が複数ある場合は、これらの行の1つが選択されます。 ORDER BY句がある場合は、最初の行が選択されます。

DISTINCT a, bは、DISTINCT ON (a, b) a, bと同じです。

+0

何が基本ですか独特のものと単独のものとの違いは? –

+0

私はそれを説明する答えを広げました。 –

関連する問題