【问题标题】:Find list of tables from list of cols [duplicate]从列列表中查找表列表[重复]
【发布时间】:2021-01-23 20:47:14
【问题描述】:

我用谷歌搜索了一下,但我最大的问题是不知道要搜索什么。我觉得无论我搜索什么都不是我的问题,所以如果您有指向另一个问题的链接,请不要因为我无法搜索而随意链接它并完成它。

假设我有 250 个不同的字段(列),它们都来自 10 个表中的 1 个,但我需要弄清楚哪个字段来自哪个表。也许我可以做一个大量的选择语句,但可能存在重复的列名,这听起来很头疼

查看每个列名并在所有这些表中搜索以找到每一个似乎太难了?有什么想法吗?我的问题有意义吗?如果您需要更多信息,请告诉我。

【问题讨论】:

  • 需要更多细节。你能告诉我们你想做什么吗?

标签: sql sql-server


【解决方案1】:

您可以使用information_schema.columns获取信息

select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE 
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME in ('col1', 'col2', ...)

【讨论】:

  • 每当我这样做时,我都会得到很多无效的列名。这是否意味着我的列名列表不正确?
【解决方案2】:

对于 SQL Server,您可以从 system base tables 找到元数据信息

   SELECT t.name AS table_name,
           c.name AS column_name
      FROM sys.tables AS t
      JOIN sys.columns AS c ON t.object_id = c.object_id
     WHERE c.name IN('col1','col2') --give the columns names here.

现在,此代码特定于 SQL Server,而不是可移植代码。 但很少有需要注意的情况,而不是使用 INFORMATION_SCHEMA,它并不总是包含所有信息,例如列是否具有 IDENTITY 属性,因为它是 SQL Server 专有的。

你可以阅读更多关于这个here

【讨论】: