0

特定の条件で重複を削除したいmysqlテーブルがあります

名前、cl_1、cl_2、cl_3、cl_4、cl_5、cl_6がまったく同じである場合は削除したいのですが、1つが異なり、他の列が同じである場合は削除する必要はありません。

たとえば、7行目ではなく1行目と4行目を削除したい

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
4

1 に答える 1

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

SQL フィドルのデモ

ところで -- 行 3 と 6 はどうですか? それらはまったく同じように見えますか?

http://sqlfiddle.com/#!2/26b8b/1

于 2013-03-09T03:07:36.213 に答える