在sql server中查找具有重复数据的多个表

时间:2015-02-27 19:35:48

标签: sql-server

我的数据库中有很多表。我想创建一个通用查询,它将搜索SQL Server中数据库中所有表的所有列中的重复记录。

像这样,

select 
    T.NAME as TABLE_NAME,
    C.NAME as COLUMN_NAME
from 
    SYS.TABLES as T
inner join 
    SYS.COLUMNS C on T.OBJECT_ID = C.OBJECT_ID
group by 
    T.NAME, C.NAME
having 
    count(*) > 1

我不知道该怎么做或者有什么方法可以做到。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容找到重复的列名:

select column_name
from information_schema.columns
group by column_name
having count(*) > 1;

您可以join返回column获取表名。您可能还希望将搜索限制为基表(不清楚“重复”的含义)。

答案 1 :(得分:0)

如果您想快速查看两个表是否相同,可以从CHECKSUM_AGG开始,并将结果与​​两个表进行比较。如果它们具有相同的列类型且checksum_agg的结果相等,则无论行顺序如何,内容都相同。