我希望删除基于两列的重复行,但需要保留其中一行。
重复行可能超过两行,例如:
ID NAME PHONE
-- ---- ----
1 NIL 1234
2 NIL 1234
3 NIL 1234
4 MES 5989
我想要从以上三行中删除任意2行,保留1行。
我希望删除基于两列的重复行,但需要保留其中一行。
重复行可能超过两行,例如:
ID NAME PHONE
-- ---- ----
1 NIL 1234
2 NIL 1234
3 NIL 1234
4 MES 5989
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
在执行删除语句后,对该列强制执行唯一约束条件,以防止再次插入重复记录。
ALTER TABLE TableA ADD CONSTRAINT tb_uq UNIQUE (Name, Phone)
DELETE
FROM Table
WHERE Table.id NOT IN (
SELECT MIN(idTable) idtable
FROM idTable
GROUP BY name, phone)
DELETE FROM tablename WHERE tablename.ID NOT IN ( SELECT MIN(ID) FROM tablename GROUP BY NAME, PHONE)
但是我遇到了以下错误:#1093 - 无法在FROM子句中更新目标表'timezone' - Neel