sql-server - 如何在 SQL Server 数据库的多个表中查找匹配的列?
问题描述
如何在 SQL Server 数据库的多个表中查找匹配的列?
我有一个包含 30 多个表的 SQL Server 数据库,有没有办法过滤和/或生成表中的公共列的列表,而不是手动遍历每个?
也许一些代码?
解决方案
如评论中所述,您希望使用系统表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
推荐阅读
- mysql - 将多个表合并到一个新表中的一行
- swiftui - 如何在视图中的单个 VStack 中添加多个按钮(Xcode12,SwiftUI)
- kubernetes - Hashicorp Vault - Agent Injector - 有意义吗?
- azure-synapse - 高级 SME 在 Azure Synapse Analytics 中的作用是什么?
- excel - 根据包含内容的列中的最后一个单元格选择范围
- html - 使用 Bootstrap 编写相对路径时要基于哪个文件?
- javascript - 如何在这些链接之一下输入下拉功能?
- vba - ChDir (Environ("USERPROFILE") & "\Desktop") 运行时错误 '76'
- ruby-on-rails - 从 Rails 的 /public/assets 文件夹导入 javascript 和 css 文件
- r - 如何在 R 中使用 Dataframes 根据日期时间对事件进行计数并按条件分组