首页 > 解决方案 > 如何在 SQL Server 数据库的多个表中查找匹配的列?

问题描述

如何在 SQL Server 数据库的多个表中查找匹配的列?

我有一个包含 30 多个表的 SQL Server 数据库,有没有办法过滤和/或生成表中的公共列的列表,而不是手动遍历每个?

也许一些代码?

标签: sql-serversqlitejoinmultiple-columns

解决方案


如评论中所述,您希望使用系统表sys.columns来实现您的目标。

此查询列出了在数据库中多次出现的所有列名,以及出现次数:

SELECT name, COUNT(*) 
FROM sys.columns 
GROUP BY name
HAVING COUNT(*) > 1

您可以将结果与sys.tables 连接以恢复相应的表,例如:

SELECT
    C.name AS ColumnName,
    T.name AS TableName
FROM
    (SELECT name FROM sys.columns GROUP BY name HAVING COUNT(*) > 1 ) A
    JOIN sys.columns C on C.name = A.name
    JOIN sys.tables T ON T.object_id = C.object_id
ORDER BY
    C.name,
    T.name

推荐阅读