假设有一个配置文件,其中包含字段昵称、全名。昵称字段是文本。我希望按文本字段以不区分大小写的方式对该表进行排序,删除昵称字段的重复项。我怎么发动汽车呢?
有这样的记录
CREATE TABLE profile(
nickname text,
fullname text );
SELECT DISTINCT * FROM profile
ORDER BY lower(nickname) 错误显示为ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
不幸的是,lower ()不能与varchar一起工作(它会写入一个与utf8相关的错误),并且没有办法使用CITEXT扩展。如何解决这个问题?
发布于 2021-06-03 19:33:47
如错误消息所示,不能按不存在的列排序。也就是说,将lower函数添加到select子句中,它应该可以工作:
SELECT DISTINCT lower(nickname), fullname
FROM profile
ORDER BY lower(nickname);如果您想任意消除重复的昵称,可以尝试使用DISTINCT ON
SELECT DISTINCT ON (lower(nickname)) *
FROM profile
ORDER BY lower(nickname);发布于 2021-06-03 19:13:50
SELECT DISTINCT lower(nickname),* FROM profile
ORDER BY lower(nickname);作为写入的错误
https://stackoverflow.com/questions/67820287
复制相似问题