我有一个格式为的数据库表:
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
答案 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