如何在Postgresql中查找重复的不区分大小写的记录?

9rnv2umw  于 2023-01-25  发布在  PostgreSQL
关注(0)|答案(1)|浏览(148)

我有一个包含字段idemail的用户表电子邮件地址不区分大小写,这是我们想要解决的问题,但我们有一些重复的值(除了case之外重复,所以目前我们有user@example.comUser@example.com在那里)。我现在试图获得所有重复帐户的概述,但是这个查询太耗时了,我不得不在5分钟后取消它。这个表大约有250. 000条记录。

select * from user u1
where (select count(*) from user u2
where LOWER(u1.email) = LOWER(u2.email)) > 1

我找到了大量的例子来查找字面上的重复记录,但没有一个不区分大小写的重复记录。

58wvjzkj

58wvjzkj1#

可以使用having子句。应该比内部子句快

select lower(email) 
from test 
group by lower(email) 
having count(*)>1

DEMO

相关问题