不知何故,我的表中有重复的条目。数据结构的设置如下:
RecordID, UserID, clockin, clockout
因此,如果一个用户有2个具有相同clockin/clockout
时间的条目,则它是重复的。副本看起来像这样。该条目应该只存在一次,clockin & clock
输出时间完全相同。
RecordID UserID clockin clockout
1 16 2015-01-12 07:15:23 2015-01-12 08:55:15
2 16 2015-01-12 07:15:23 2015-01-12 08:55:15
3 44 2014-12-18 08:02:36 2014-12-18 04:02:36
4 44 2014-12-18 08:02:36 2014-12-18 04:02:36
答案 0 :(得分:2)
使用row_number
窗口函数:
with cte as(select *, row_number() over(partition by UserID, clockin, clockout
order by RecordID ) as rn from TableName)
delete from cte where rn > 1
答案 1 :(得分:1)
首先,您需要找到重复的记录并将其删除,每个UserId
,clockin
,clockout
值组合只留下一条记录。
DELETE
FROM MyTable
WHERE RecordId IN(
SELECT t1.RecordId
FROM MyTable t1
INNER JOIN MyTable t2 ON(t1.UserId = t2.UserId
AND t1.clockin = t2.clockin
AND t1.clockout = t2.clockout)
WHERE t1.RecordId < t2.RecordId
)
然后,您应该在这3列的组合上设置unique constraint或unique index,这样Sql Server就会阻止您输入重复的数据。