我有一个mysql表我想删除具有特定条件的副本
如果name,cl_1,cl_2,cl_3,cl_4,cl_5,cl_6完全相同,如果其中一个不同且其他列相同则无需删除,我想删除。
例如我想删除第1行和第4行而不是7
id name cl_1 cl_2 cl_3 cl_4 cl_5 cl_6
--------------------------------------------------------------
1 name1 T1 T2 T3 T4 T5 T6 (<< Remove)
2 name2 L1 M2 L3 L4 T5 T6
3 name3 T1 T2 T3 T4 T5 T6
4 name1 T1 T2 T3 T4 T5 T6 (<< Remove)
5 name2 T1 T2 T3 T4 T5 T6
6 name3 T1 T2 T3 T4 T5 T6
7 name1 T1 T2 T3 T4 T5 K6 (Not this one)
8 name5 T1 T2 T3 T4 T5 N6
9 name6 T1 T2 T3 T4 T5 H6
答案 0 :(得分:2)
这应该有效:
DELETE Y
FROM YourTable Y JOIN
(
SELECT
name, cl_1, cl_2, cl_3, cl_4, cl_5, cl_6
FROM YourTable
GROUP BY name, cl_1, cl_2, cl_3, cl_4, cl_5, cl_6
HAVING COUNT(1) > 1
) T ON Y.name = T.name
AND Y.cl_1 = T.cl_1
AND Y.cl_2 = T.cl_2
AND Y.cl_3 = T.cl_3
AND Y.cl_4 = T.cl_4
AND Y.cl_5 = T.cl_5
AND Y.cl_6 = T.cl_6
BTW - 第3行和第6行怎么样?那些似乎完全相同?