MySQL查询删除重复行

时间:2014-04-22 12:11:08

标签: mysql sql database duplicates

我有一个格式为的数据库表:

DataA | DataB | DataC | TimeStamp | UniqueID

数据可能如下所示:

5 | 4 | 11 | 1/1/2014 | 1
5 | 4 | 2  | 2/1/2014 | 2
5 | 4 | 11 | 3/1/2014 | 3
3 | 6 | 7  | 4/1/2014 | 4

问题是我有重复的条目,其中DataA-C都是相同的(第1行和第3行),但TimeStamp(记录日期数据)和UniqueID总是不同。我记录数据的方式(我没有选择更改录制程序)总是留下两次记录相同数据的可能性。

如何运行查询以比较所有数据列以检查是否存在重复行并删除包含最新数据的条目。例如,首先记录第1行,因此我想删除第3行并保留第1行

提前感谢您的帮助。

这是我尝试过的一个选项:

Select Line 
         DataA
        , DataB
        , DataC
FROM [Database].[dbo].[tbl_Data]
Where Line = 5
Group 
    BY Line 
     DataA
    , DataB
    , DataC
Having COUNT(*) > 1

3 个答案:

答案 0 :(得分:0)

DELETE FROM test 
WHERE UniqueId NOT IN (SELECT UniqueId FROM
  (SELECT *
   FROM test
   ORDER BY TimeStamp) T1
 GROUP BY DataA, DataB, DataC)

<强> Fiddle

答案 1 :(得分:0)

获取 MAX ID更改如下:

Select MAX(ID)
FROM [Database].[dbo].[tbl_Data]
Where Line = 5
Group 
    BY Line 
     DataA
    , DataB
    , DataC
Having COUNT(*) > 1

答案 2 :(得分:0)

DELETE FROM the_table
WHERE id IN (the select to return duplicated records' ids)

选择应与此类似

SELECT 
    id
FROM
   the_table T JOIN
(
    SELECT MIN(id) AS id FROM the_table 
    GROUP BY all your fields here
) sub ON T.id= SUB.id