2015-05-18 129 views
-1

我正在查找一個SQL查詢以給我一個表中重複條目的列表。但是,需要考慮3列。首先是一個ID,其次是一個名稱,第三個是一個日期。情況是,有多個名稱被分配了相同的ID,並且在一天中有多個這樣的記錄,這使得每天有幾千個不同的記錄。查詢查找重複條目

我已經過濾了它,以便只顯示過去7天的結果,但記錄的數量對我來說仍然太多。我只想減少輸出順序中的行數以正確提取結果。

樣品

|--id-|--name--|-------date------| 
| 1 | a |5-9-2015, 10:00am| 
| 1 | a |5-8-2015, 10:02am| 
| 1 | a |5-8-2015, 11:00am| 
| 1 | b |5-8-2015, 10:00am| 
| 1 | b |5-8-2015, 10:02am| 
| 1 | c |5-8-2015, 10:00am| 
| 2 | d |5-8-2015, 10:00am| 

預期輸出

|--id-|--name--| 
| 1 | a | 
| 1 | b | 
| 1 | c | 
| 2 | d | 

條目的夾雜物沒有任何重複的罰款。重要的是隻返回一天中唯一的id-name組合的記錄。

在此先感謝您提供的任何幫助。

+0

您使用的是MySQL還是Oracle?請用您實際使用的數據庫標記您的問題。 –

+3

*重要的是隻返回一天中唯一的id-name組合的記錄*但您的預期輸出不考慮日期。否則,你將有兩行1作爲id和'a'作爲名字。 –

+0

在mysql或sql查詢中使用'Group by'命令 – Asif

回答

3

你可以組合爲:

select distinct id, name 
from sample; 

如果你想重複使用group byhaving

select id, name 
from sample 
group by id, name 
having count(*) > 1; 

編輯:

如果你想要這個日期,再加入date(date)group by和也許select條款。

+2

根據OP,*重要的是隻返回一天中唯一的id-name組合的單個記錄*。您的查詢不考慮日期。我看到預期的產出不符合問題描述。 –

0

要返回單個id-name數據每天可以使用此:

select id, name 
from tab 
group by id, name, date(date) 
0

的日期()函數提取一個日期或日期/時間表達的日期部分。

select id,name 
from sample 
group by id,name,DATE(date) 
having count(*)>1;