2016-03-31 10 views
-1

私は2つ以上の同一のレコードを持つmysqlテーブルを持っています。 表内 列1、列2、列3および列4の結合が同じ値である場合、それらのレコードは重複していると見なされます。 私は、テーブル内の列の残りを気にいけないが、4列以上の組み合わせが同一である場合、私は、MAX(ID)の1つのレコードを維持分のすべてのレコード(同上)2つまたは3つ以上の同一レコード:Delete Mysql

id,  site,  sector,  para1,  para2 
'652', 'LCUE1015', '1',   '2275',  '0' 
'166994', 'LCUE1015', '1',   '2275',  '0' 
'5343', 'LCUE1015', '1',   '2275',  '0' 
'166003', 'LCUE1015', '1',   '2275',  '0' 
'76351', 'LCUE1015', '1',   '2275',  '0' 
'77342', 'LCUE1015', '1',   '2275',  '0' 
+0

は、いくつかのサンプルデータ –

+0

だからここに質問 – Priyanshu

+0

'site'、' sector'、 'para1'と' para2'が重複を定義するの組み合わせでadedで提供されるものですか。 –

答えて

1

を削除したいです例えば(この特定の問題のために厳密に必要以上のクエリ)

DELETE x 
    FROM my_table x 
    LEFT 
    JOIN 
    (SELECT site 
      , sector 
      , para1 
      , para2 
      , MAX(id) id 
     FROM my_table 
     GROUP 
      BY site 
      , sector 
      , para1 
      , para2 
    ) y 
    ON y.site = x.site 
    AND y.sector = x.sector 
    AND y.para1 = x.para1 
    AND y.para2 = x.para2 
    AND y.id = x.id 
WHERE y.id IS NULL; 
関連する問題