mysql - 如何使用 MySQL 删除一列中所有重复的行?

标签 mysql sql

我有一个表,其中一列 title 中有重复的值,因此 title 列有多个具有相同值的行。

我想删除所有重复项,但标题相同。

我可以执行哪种查询来完成此操作?

  Title     Subject             Description               Created_at
Something  Somethingsubject    Somethingdescription       2016-04-13 16:37:10  
Something  Anothersubject      Anotherdescription         2016-04-11 16:37:10
Something  Thirdsubject        Thirdsubject               2016-04-14 16:37:10
NumberTwo  NumberTwoSubject    NumberTwoSubject           2016-04-12 16:37:10
NumberTwo  AnotherNumberTwo    AnotherNumberTwoDescripti  2016-04-15 16:37:10

我想删除所有重复项,只留下一个,最好是最旧的记录,这样唯一剩下的记录就是:

Title        Subject            Description            Created_at
Something  Anothersubject     Anotherdescription    2016-04-11 16:37:10
NumberTwo  NumberTwoSubject    NumberTwoSubject     2016-04-12 16:37:10

最佳答案

你可以做一个自连接DELETE:

DELETE t1
FROM mytable t1
JOIN (SELECT Title, MAX(Created_at) AS max_date
      FROM mytable
      GROUP BY Title) t2
ON t1.Title = t2.Title AND t1.Created_at < t2.max_date   

Demo here

关于mysql - 如何使用 MySQL 删除一列中所有重复的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922940/

相关文章:

java - 我有一个基本的 UpdateWhere 语句,该语句在语法上是正确的,但不会更新表

sql - 为包含列表的单元格返回多行

php - 网站的 SQL 数据库存储有哪些替代方案?

php - 在登录页面中使用 FOUND_ROWS

php - 我如何开始使用 PHP 和 MySQL

mysql - 找出 SQL 中的 AVG 列

mysql - Rails 高级查询与连接和求和计算

php - 正确使用mysql查询

php - 从其他表中选择具有条件规则(计数)的数据

sql - mysql比较枚举