首页 > 解决方案 > 如何获取在 SQL Server 内部数据库的不同表中重复的列

问题描述

我有一个包含大量表的数据库。从这些表中,我想列出出现在多个表中的所有列名及其表名。

我尝试谷歌搜索以找到任何合适的文章,可以解释如何实现我在问题部分中描述的结果。

没有代码片段

没有错误信息。

标签: sql-servertsql

解决方案


有很多结果和片段显示了如何获取数据库中的所有列名。这是对sys.columns的单个查询,例如:

select Name
from sys.columns

在任何表中返回多次出现的相同 SQL 查询也可以在这里使用,例如:

select Name,count(*)
from sys.columns
group by Name
having count(*)>1

将返回多次出现的列名。

您可以使用COUNT()with获取列名和表名,而无需加入OVER

with t as (
    select name,
           object_name(object_id) as TableName,
           count(*) over (partition by name) cnt
    from sys.columns
)
select * 
from t
where cnt >1

推荐阅读