sql - 仅从特定的 Postgresql 表中删除重复项

标签 sql postgresql

我有一个包含重复项的表,我想为每个重复项只保留一行。

我可以使用我的 SQL 命令选择重复项:

SELECT DISTINCT ON (email, first_name, last_name) * from customer;

但我想在我之前的命令中使用 DELETE

这个命令应该可以正常工作吗?

DELETE FROM customer WHERE customer.id NOT IN 
    (SELECT id FROM 
        (SELECT DISTINCT ON (email, first_name, last_name) * from customer));

这是真的吗?

最佳答案

我猜你有一个 id 字段。

delete from customer 
where id not in (
    select min(id)
    from customer
    group by email, first_name, last_name
)

子查询查找您要保留的行的 ID。 然后你删除其他行

关于sql - 仅从特定的 Postgresql 表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54257538/

相关文章:

postgresql - 递归外键问题

2个表中名称列之间的SQL差异函数

mysql - 在 MySQL 中为连接某个表创建索引

java - 如何为已创建的数据库应用程序创建.jar 文件?

node.js - 重命名模型文件中的列名 - Sequelize

performance - postgres 查询性能设置

mysql - SQL 一次查询两个表并将结果作为 JSON 对象循环

mysql - "IN"子句中包含多个日期的 PIVOT

sql - 帮助递归sql查询

postgresql - 如何在 PostgreSQL 中获取多边形的具体点?