我想删除基于两列的重复行,但需要保留所有行 1 行。
重复行可以多于两行,例如,
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
- SQLFiddle 演示 http://www.sqlfiddle.com/#!2/87018/1
执行删除语句后,对列强制执行唯一约束,这样就不能再次插入重复记录,
ALTER TABLE TableA ADD CONSTRAINT tb_uq UNIQUE (Name, Phone)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)