2009-07-20 12 views
2

で重複行を排除、私は重複行を削除するにはPostgresのPostgresの

でSELECTクエリから返さ私は次のクエリ

SELECT DISTINCT name FROM names ORDER BY name 

を持っている。しかし、これは何とか重複する行を排除しないのですか?

+0

私は、[テーブルから重複を削除]古代のPostgreSQL 7.3.4バージョンの – Roland

+0

が重複する可能性を使用しています(http://stackoverflow.com/questions/243567/remove-duplicate-from-a-table ) – Flimzy

+0

これは重複していません。 @Flimzy ...かなり曖昧なタイトルで、別の質問。 – ocodo

答えて

5

PostgreSQLは大文字と小文字が区別され、これがここでの問題かもしれません DISTINCT ONは、大文字と小文字を区別しない検索のために使用することができる(7.4でテスト)

SELECT DISTINCT ON (upper(name)) name FROM names ORDER BY upper(name); 
+0

Thx、これが動作する – Roland

0

たぶん違う探し-同じ-しかし、文字で何か( LATIN 'a'/CYRILLIC 'ä'のように)

0

trim()も忘れずに追加してください。そうでない場合、「レコード」と「レコード」は別のエンティティとして扱われます。

SELECT DISTINCT ON (upper(trim(name))) name FROM names ORDER BY upper(trim(name)); 
0
のPostgres 9.2では

と大きいが、あなたが今CITEXTタイプに列をキャストするか、そうであっても、あなたが持っていない列を作ることができます:それは、私は私のクエリを更新しなければならなかった、最初は私を傷つけてしまいました選択してキャストする

SELECT DISTINCT name::citext FROM names ORDER BY name::citext