显示列表中的重复数据

时间:2012-07-24 17:49:19

标签: sql sql-server-2008 tsql

目标:
在表格测试中显示应删除的重复数据 然而, 如果有两个重复数据,例如“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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

因为您没有主键,所以您可以使用group by或distinct重新生成表:

select distinct Region, Category, Energy
into newt
from t

这样可以避免必须识别重复项,然后再次弄清楚如何删除这些行。