2009-07-20 73 views
2

我想删除重复行SELECT查询Postgres里消除重复行Postgres里

返回我有以下查询

SELECT DISTINCT name FROM names ORDER BY name 

但这并不会自动消除重复行?

+0

我使用的是古老的PostgreSQL 7.3.4版本 – Roland 2009-07-20 08:30:14

+0

的[从表中删除重复]可能重复(http://stackoverflow.com/questions/243567/remove-duplicate-from-a-table ) – Flimzy 2014-03-04 20:32:29

回答

5

PostgreSQL是大小写敏感的,这可能是一个问题在这里 DISTINCT ON可用于区分大小写的搜索(7.4测试)

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

也许一些具有相同的外观,但是,不同的字符(像拉丁'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