Nee*_*eel 6 mysql sql sql-delete
我想删除基于两列的重复行,但需要保留所有行的1行.
重复行可以超过两行,如,
ID NAME PHONE
-- ---- ----
1 NIL 1234
2 NIL 1234
3 NIL 1234
4 MES 5989
Run Code Online (Sandbox Code Playgroud)
我想从3以上删除2行中的任意一行并保留1行.
Joh*_*Woo 16
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
Run Code Online (Sandbox Code Playgroud)
执行delete语句后,对列强制执行唯一约束,以便不能再次插入重复记录,
ALTER TABLE TableA ADD CONSTRAINT tb_uq UNIQUE (Name, Phone)
Run Code Online (Sandbox Code Playgroud)