这个问题在这里和其他一些地方都被问到过,但似乎建议的答案要么不适用于Postgres,要么在这种情况下不起作用。
我想选择不同的列名,例如:
SELECT DISTINCT column_name FROM table_name WHERE ... ORDER BY column_name
不过,我想消除区分大小写的重复项(例如,A
和a
应被视为相同的内容)
我尝试了COLLATE
,但所有可用的格式都是区分大小写的。而通过LOWER()
或UPPER()
更改大小写无法解决问题,因为在这种情况下我需要大小写信息。
我考虑使用以下方法获取唯一的值,但仍保留大小写:
SELECT DISTINCT upper(my_column) as upper_case, my_column
FROM my_table
ORDER BY upper(my_column)
但是在distinct查询中引入my_column会破坏整个查询。
如何获取唯一的值(不区分大小写),而不修改结果本身的大小写?
SELECT DISTINCT ON (upper(my_column)) my_column
这样的语句可行吗?(已编辑以修复语法) - Jiří BaumDISTINCT
而不是DISTINCT ON
。 - ateymour