mysql 刪除單表內多個欄位重複的資料
阿新 • • 發佈:2019-01-07
遇到個問題,一個表內兩個欄位應該加上unique約束,但沒加導致出現重複資料,網上找到一條sql可以刪掉重複資料,原sql是這樣的:
DELETE from test
WHERE (mid,uid) in
(SELECT mid,uid FROM test GROUP BY mid,uid HAVING COUNT(*)>1)
AND
id NOT in (SELECT id FROM test GROUP BY mid,uid HAVING COUNT(*)>1);
本地會出現這個錯誤
在子查詢的外面嵌一個select from 就可以了
DELETE from test WHERE (mid,uid) in (SELECT mid,uid from (SELECT mid,uid FROM test GROUP BY mid,uid HAVING COUNT(*)>1) s1) AND id NOT in (SELECT id from (SELECT id FROM test GROUP BY mid,uid HAVING COUNT(*)>1) s2);
測試表
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mid` int(11) NOT NULL,
`uid` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8