[學習] SQLITE 如何找出重複的紀錄

在交易紀錄資料中,很容易遇到資料重複出現的問題,
在資料庫中,我們可以簡單的透過 HAVING 來找到重複的資料。

假設我們有張資料表(資料表名稱:Clicks)如下,
第一列是交易代碼(sessionid)、第二列是交易時間(time)、第三列是物品代碼(itemid)、第四列是物品類型(category):
2015-07-03_152731

當我們想找到使用者代碼重複的資料,
可以使用 select * from Clicks group by sessionid having count(sessionid) > 1;

會得到sessionid重複的紀錄,如下圖結果:
2015-07-03_153517

但在本例中,這其實是同一使用者在不同時間的紀錄,
所以我們應該要保留所有重複的紀錄,此時可以改用:
select * from Clicks where sessionid in (select sessionid from Clicks group by sessionid having (count(sessionid) > 1));

此時結果就會保留所有重複的紀錄,達到我們的目的:
2015-07-03_154314

本文主要內容修改自:
https://pvanb.wordpress.com/2012/05/04/find-and-select-duplicate-values-in-your-vector-attribute-table/

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s