2016-03-10 53 views
0

我想消除访问表中的重复行。我想请按照下列行的用户ID分组,按照timestamp.My排序表的每一行看起来是这样的:sql消除重复行

userid pagetag  time 
111  1-2  19:08:02 
111  1-2  19:08:02 
111  1-2  19:00:11 
111  1-2  19:00:12 
113  1-3  13:02:04 
113  1-3  13:02:04 
113  1-2  13:04:08 
115  1-2  14:18:56 
115  1-2  14:14:22 
115  1-2  14:14:22 

而结果是这样的:

userid pagetag  time 
    111  1-2  19:00:11 
    111  1-2  19:00:12 
*111  1-2  19:08:02* 
*113  1-3  13:02:04* 
    113  1-2  13:04:08 
*115  1-2  14:14:22* 
    115  1-2  14:18:56 
+0

你真正想'delete'记录?如果是这样,那么你的以前是一个不同的问题。你不能在你的表中排序结果,sql本质上是无序的。但是,您可以删除重复数据。如果你只是想'选择'非重复,那么'distinct'和'order by'仍然是相同的答案... – sgeddes

+0

是的,我想删除重复的行。但结果不显示 按时间顺序 – tanxin

+0

您可以删除重复 - 很容易。尽管如此,您不能重新排列存储在表中的结果。数据库无序存储数据 - 无论查看表格时它们的外观如何,订单都无法保证。只需在查看数据时提供'order by'子句,无论是表单,查询还是报表。 – sgeddes

回答

0

最简单和最快的方法将是一个简单的群组:

Select 
    userid, 
    pagetag, 
    [time] 
From 
    LogTable 
Group By 
    userid, 
    pagetag, 
    [time] 

这将消除欺骗和提供排序。

然后使用此查询作为进一步处理的来源。

-1

这里是SQL语法去除重复行

With DulicateRowsCTE as 
(
    select *,ROW_NUMBER() over(PARTITION by userid,pagetag order by userid) as rowno from [Table_1] 

) 
    select * from DulicateRowsCTE where rowno>1 
+0

问题是** MS Access **,所以'PARTITION BY'方法无效,甚至在另一个RDBMS上它也不会回答问题 –

0

该查询达到你想要的结果:

SELECT DISTINCT userid, pagetag, [time] 
FROM LogTable 
ORDER BY userid, [time]