【发布时间】: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