我有一个像这样的数据库:
users
id name email phone
1 bill bill@fakeemail.com
2 bill bill@fakeemail.com 123456789
3 susan susan@fakeemail.com
4 john john@fakeemail.com 123456789
5 john john@fakeemail.com 987654321
我希望能够基于电子邮件字段合并重复记录。
正在尝试使用以下几点考虑:
- 基于电子邮件的重复进行合并
- 如果一行具有空值,则使用具有最多数据的行。
- 如果两行是重复的,但其他字段不同,则使用ID号最高的行(请参见 john@fakeemail.com 行的示例)。
DELETE FROM users WHERE users.id NOT IN
(SELECT grouped.id FROM (SELECT DISTINCT ON (email) * FROM users) AS grouped)
出现了语法错误。
我正在尝试将数据库转换为这样,但是我无法找到正确的查询语句:
users
id name email phone
2 bill bill@fakeemail.com 123456789
3 susan susan@fakeemail.com
5 john john@fakeemail.com 987654321
GROUP BY email
吗? - Jordash