0

私のテーブル名はダミーで、ID、NAME、TIMESTAMP、およびその他の 3 つの列の 6 つの列が含まれています。

ID、NAME、TIMESTAMP の値が別の行と一致する重複行を削除したい。ID、NAME、および TIMESTAMP の値が同じ行が複数ある場合は、1 つを保持して他を削除します。

4

2 に答える 2

0

ここに解決策があります

https://stackoverflow.com/a/5016434

私が遭遇した別の可能な解決策:

DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name

最小の ID 値を持つ行を保持したい場合 OR

DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name

https://stackoverflow.com/a/5770309

DELETE DupRows.*
FROM MyTable AS DupRows
   INNER JOIN (
      SELECT MIN(ID) AS minId, col1, col2
      FROM MyTable
      GROUP BY col1, col2
      HAVING COUNT(*) > 1
   ) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2
      AND SaveRows.minId <> DupRows.ID;
于 2013-06-19T02:49:12.837 に答える