消除Postgres中的重复行

时间:2009-07-20 08:29:21

标签: postgresql

我想从Postgres的SELECT Query中删除重复的行返回

我有以下查询

SELECT DISTINCT name FROM names ORDER BY name

但是这不会消除重复的行?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

也许有相同但不同角色的东西(比如LATIN'a'/ CYRILLIC''')

答案 2 :(得分:0)

不要忘记在上面添加一个trim()。否则,“记录”和“记录”将被视为单独的实体。最初我最终伤害了我,我不得不将我的查询更新为:

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

答案 3 :(得分:0)

在Postgres 9.2及更高版本中,您现在可以将列强制转换为CITEXT类型,甚至可以创建无需强制选择的列。

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