【问题标题】:Remove duplication of combination 2 columns删除组合 2 列的重复项
【发布时间】:2022-07-22 22:31:47
【问题描述】:

我想删除名字和姓氏组合相同的所有重复项

表用户 mysql> select * from users;

+----+------------+-----------+
| id | LastName   | FirstName |
+----+------------+-----------+
|  1 | Kowalski   | Jan       |
|  2 | Malinowski | Marian    |
|  3 | Malinowski | Marian    |
|  4 | Kowalski   | Jan       |
|  5 | Malinowski | Marian    |
|  6 | Malinowski | Marian    |
+----+------------+-----------+

我已经创建了脚本

set @x = 1;
set @previous_name = '';


DELETE FROM users where id IN (SELECT id from (
    select id, @previous_name,IF (CONCAT(FirstName, LastName) = @previous_name, @x:= @x + 1, IF(@previous_name:=CONCAT(FirstName, LastName), @x, IF(@x:=1, @x, @x))) as occurance
        from users order by CONCAT(FirstName, LastName)
    ) AS occurance_table where occurance_table.occurance > 1);

但是sql返回错误

ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'JanKowalski'

我发现了一些类似的问题,但解决方案是删除and word form syntax。

我想准备 db 为 2 列添加唯一约束,所以我想清除重复的表。

到达它的最佳方式是什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:
    delete from users
    where id not in
    (
      select min(id)
      from users
      group by LastName, FirstName
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多