如何在SQL Server中获取在不同表中重复的列。

29 浏览
0 Comments

如何在SQL Server中获取在不同表中重复的列。

这个问题已经在此处有答案了:

如何从SQL Server中的表中获取列名?

我有一个拥有大量数据表的数据库。我想要列出所有在多个表中出现的列名以及它们所在的表名。

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

没有代码片段。

没有错误信息。

admin 更改状态以发布 2023年5月22日
0
0 Comments

有很多结果和片段显示如何获取数据库中的所有列名。只需使用一个查询到sys.columns即可,例如:

select Name
from sys.columns

在任何表格中返回多个出现次数的相同SQL查询也可以在此处使用,例如:

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

将返回出现多次的列名。

您可以通过使用COUNT()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

0
0 Comments

这将返回列名和表名:

select distinct 
TABLE_NAME, 
COLUMN_NAME 
from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME in(
    select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
    group by COLUMN_NAME
    having count(*) > 1
)
order by TABLE_NAME, COLUMN_NAME

0