我想从Postgres的SELECT Query中删除重复的行返回
我有以下查询
SELECT DISTINCT name FROM names ORDER BY name
但是这不会消除重复的行?
答案 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