我的数据库中有很多表。我想创建一个通用查询,它将搜索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
我不知道该怎么做或者有什么方法可以做到。
答案 0 :(得分:0)
您可以使用以下内容找到重复的列名:
select column_name
from information_schema.columns
group by column_name
having count(*) > 1;
您可以join
返回column
获取表名。您可能还希望将搜索限制为基表(不清楚“重复”的含义)。
答案 1 :(得分:0)
如果您想快速查看两个表是否相同,可以从CHECKSUM_AGG开始,并将结果与两个表进行比较。如果它们具有相同的列类型且checksum_agg的结果相等,则无论行顺序如何,内容都相同。