Sql 在列表中显示重复的数据
目标:Sql 在列表中显示重复的数据,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,目标: 在表格测试中显示应删除的重复数据。 然而, 如果存在两个重复数据,例如“3412纽约”。测试表中仅应显示1行 问题: 我不知道怎么做。 请记住,这张桌子可能有一百万行 All data from the list table testing Region Category Energy ---------------------------------- 1235 Delaware candy 5 1235 Delaware candy
在表格测试中显示应删除的重复数据。
然而, 如果存在两个重复数据,例如“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
看看结果
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
由于没有主键,因此可以使用group by或distinct重新生成表:
select distinct Region, Category, Energy
into newt
from t
这将使您不必识别重复的行,然后再弄清楚如何删除这些行。还有哪些列(或组合)唯一地识别一行,这是我面临的问题之一。没有小学教育。识别唯一行的唯一方法是组合所有列。如果存在重复项,则组合不是唯一的。