首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postgresql文本类型字段排序时如何去重?

postgresql文本类型字段排序时如何去重?
EN

Stack Overflow用户
提问于 2021-06-03 19:05:05
回答 2查看 45关注 0票数 1

假设有一个配置文件,其中包含字段昵称、全名。昵称字段是文本。我希望按文本字段以不区分大小写的方式对该表进行排序,删除昵称字段的重复项。我怎么发动汽车呢?

有这样的记录

代码语言:javascript
复制
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扩展。如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-03 19:33:47

如错误消息所示,不能按不存在的列排序。也就是说,将lower函数添加到select子句中,它应该可以工作:

代码语言:javascript
复制
SELECT DISTINCT lower(nickname), fullname 
FROM profile
ORDER BY lower(nickname);

如果您想任意消除重复的昵称,可以尝试使用DISTINCT ON

代码语言:javascript
复制
SELECT DISTINCT ON (lower(nickname)) * 
FROM profile
ORDER BY lower(nickname);
票数 1
EN

Stack Overflow用户

发布于 2021-06-03 19:13:50

代码语言:javascript
复制
SELECT DISTINCT lower(nickname),* FROM profile
ORDER BY  lower(nickname);

作为写入的错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67820287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档