不区分大小写的重复SQL

hdx*_*hdx 12 mysql sql postgresql duplicate-data

所以我有一个user表,其中user.username有许多重复项,如:

usernameUsernameuseRnAme
johnJohnjOhn

这是一个错误,这三个记录应该只有一个.

我正在尝试提出一个SQL查询,列出按创建日期排序的所有这些案例,所以理想情况下结果应该是这样的:

username jan01
useRnAme jan02
Username jan03
john     feb01 
John     feb02
jOhn     feb03
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激

Lar*_*tig 27

暂且不谈区分大小写的问题,基本策略是:

 SELECT username, create_date FROM your_table
     WHERE username IN 
     (SELECT username FROM your_table GROUP BY username HAVING COUNT(*) > 1)
 ORDER BY username, create_date
Run Code Online (Sandbox Code Playgroud)

许多RDBMS(包括MySQL假设您使用CHAR或VARCHAR作为用户名列),默认情况下执行不区分大小写的搜索.对于这些数据库,上述解决方案将起作用.要解决其他产品的区分大小写问题,请在特定于RDBMS的大写转换函数中包装除第一次出现的username之外的所有内容:

 SELECT username, create_date FROM your_table
     WHERE UPPER(username) IN 
     (SELECT UPPER(username) FROM your_table GROUP BY UPPER(username) HAVING COUNT(*) > 1)
 ORDER BY username, create_date
Run Code Online (Sandbox Code Playgroud)