2016-03-10 52 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]