2012-07-24 122 views
0

目標:
在表格測試中顯示應刪除的重複數據。
但是, 如果有兩個重複的數據,例如「3412紐約」。 1行只應顯示在測試表中。在列表中顯示重複數據

問題:
不知道該怎麼做。 請記住,這張表可以是一百萬行。

All data from the list 

table testing 
Region   Category Energy 
---------------------------------- 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3412 New York food  3 
3412 New York food  3 
3412 Washington coke  7 
3412 california chips  20 
3412 california chips  20 
3412 california chips  20 
3412 california chips  20 





Requested result that should display data in table testing 
Table testing 
Region   Category Energy 
---------------------------------- 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
1235 Delaware candy  5 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3125 New Jersey drink  4 
3412 New York food  3 
3412 california chips  20 
3412 california chips  20 
3412 california chips  20 
+0

什麼其他列(或組合)唯一標識一行 – gbn 2012-07-24 17:51:31

+0

這是我面臨的問題之一。沒有主要的。識別唯一行的唯一方法是組合所有列 – 2012-07-24 18:13:09

+0

如果有重複項,組合不是唯一的。 – 2012-07-24 18:38:38

回答

1

要查看結果

SELECT 
    Region, Category, Energy 
FROM 
    (
    SELECT 
     Region, Category, Energy, 
     ROW_NUMBER() OVER (PARTITION BY Region, Category, Energy ORDER BY Region) AS rn 
    FROm 
     MyTable 
    ) X 
WHERE 
    X.rn > 1 
0

因爲你沒有主鍵,你可以使用group by或不同的只是重新生成表:

select distinct Region, Category, Energy 
into newt 
from t 

這會節省你必須識別重複項,然後再次找出如何刪除這些行。