MySQL删除重复行

标签 mysql sql

我有一个评论表,其结构如下:

id, name, email, comment

我有很多重复的评论,具有相同的名称和电子邮件。我需要删除它们,有人可以建议我如何使用单个查询实现此目的吗?

谢谢

最佳答案

DELETE FROM comments c1 

WHERE EXISTS (
    SELECT * 
    FROM comments c2 
    WHERE c2.id <> c1.id 
        AND c2.name = c1.name 
        AND c2.email = c1.email 
        AND c2.comment = c1.comment
)

AND c1.id <> (
    SELECT MIN(c2.id) 
    FROM comments c2 
    WHERE c2.name = c1.name 
        AND c2.email = c1.email 
        AND c2.comment = c1.comment
)

关于MySQL删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4712809/

相关文章:

sql - 选择 MAX 日期加上 ID 值

javascript - PHP 重定向 URL

mysql - 在 SQL 中,如何引用日期最接近我所在行的日期的行?

mysql - Mysql 5有管理分层数据的程序吗?

mysql - 在 MySQL 中添加 last_update 字段是一个好习惯吗?

sql - 从多行创建 1 条记录

mysql - 提高 MySQL 全文搜索查询的性能

php - 在php数据库连接中使用两个SELECT查询

mysql - 架构: Ordering in Rails or MySQL

mysql - 将 SQL 查询转换为 CakePHP 3.0