2012-11-22 22 views
2

例如,我有這樣的樣本數據:如何行從同一個表中的標準下比較

DATE  VALUE ID 
2010-09-28 1  20000 
2010-09-28 1  50000 X 
2010-09-28 3  20001 
2010-09-28 3  50001 X 
2010-10-02 6  50002 
2010-10-02 6  50003 

我的問題是,我已經重複數據,我只可以通過自動遞增區分它們編號:重複有很大的差異;我想刪除最新的條目,因爲考慮到日期和值與它們相應的以前的條目(用X標記)相比是相等的。儘管行相同,但如果它們沒有以前的ID(如最後2行),這是沒有問題的。

任何想法?

+0

您可以使用相同的分析功能。 –

+2

爲什麼不是其中一個值爲6的行? – fancyPants

+0

@tombom他們沒有以前的條目,所以他們不重複。我的意思是,行具有相同的值是沒有問題的。我只需要檢查是否有完全相同的條目,但ID要低得多。 – ftkg

回答

0

在你的表中,那些帶有X的值沒有相同的值...我想這是一個錯誤。

無論如何,如果你想刪除重複的ID之間的差異(例如1),你可以這樣做。

編輯:我想我現在得到你想要的。所以你不認爲是具有成功Ids的重複記錄(這是我在開始時的想法),但你認爲重複記錄誰有很大的差異。 因此,可以說ID之間的最大差別,所以你不會認爲他們複製= X

Delete From Table where ID IN 
(Select a.ID from Table a, Table b Where a.ID-b.ID > X 
AND a.Date = b.Date and a.Value = b.Value) 

在您的例子,如果你在部位X的它會做你想要的工作放1或更大。

SQL FIDDLE EXAMPLE OF THE SELECTION USED TO DELETE

你會看到上面有我給你的選擇,你的ID,你要刪除。

+0

我編輯它使其更清晰..值必須等於相應的「低ID行」。 – ftkg

+1

我明白了,所以你想要我的答案完全相反。嘿嘿 所以你有多大利潤。我的意思是你認爲重複的ID的最小差異是多少。 –

+0

謝謝,這應該工作! – ftkg