我想删除基于两列的重复行,但需要保持1行所有这些行。删除重复的行,并需要保持其中的所有人在mysql
重复行可以多于两排等,
ID NAME PHONE
-- ---- ----
1 NIL 1234
2 NIL 1234
3 NIL 1234
4 MES 5989
我想从上面3删除任何的2行,并保持1行。
我想删除基于两列的重复行,但需要保持1行所有这些行。删除重复的行,并需要保持其中的所有人在mysql
重复行可以多于两排等,
ID NAME PHONE
-- ---- ----
1 NIL 1234
2 NIL 1234
3 NIL 1234
4 MES 5989
我想从上面3删除任何的2行,并保持1行。
DELETE a
FROM tableA a
LEFT JOIN
(
SELECT MIN(ID) ID, Name, Phone
FROM TableA
GROUP BY Name, Phone
) b ON a.ID = b.ID AND
a.NAme = b.Name AND
a.Phone = b.Phone
WHERE b.ID IS NULL
已执行delete语句后,执行该列上的唯一约束,所以你不能再插入重复的记录,
ALTER TABLE TableA ADD CONSTRAINT tb_uq UNIQUE (Name, Phone)
欢迎您':D' – 2013-03-22 05:23:33
DELETE
FROM Table
WHERE Table.id NOT IN (
SELECT MIN(idTable) idtable
FROM idTable
GROUP BY name, phone)
您好马特, 我用你的查询在MySQL这样 'DELETE FROM 表名 WHERE tablename.ID NOT IN(在FROM子句您不能指定目标表 '时区' 的更新 - SELECT MIN(ID) FROM表名 GROUP BY姓名,电话)' 但我得到下面的错误我, #1093 – Neel 2013-03-22 03:48:00
另外,设计是有缺陷的...如果NIL 1234只应该出现一次,你应该使主键或至少使装配工,检查了所有脑干让你的数据库保持一致 – ITroubs 2013-03-21 13:18:51