我想显示所有具有指定列名的表

Posted

技术标签:

【中文标题】我想显示所有具有指定列名的表【英文标题】:I want to show all tables that have specified column name 【发布时间】:2011-05-11 00:07:39 【问题描述】:

如何获取具有特定列名的所有表的列表?

【问题讨论】:

【参考方案1】:
select table_name
from information_schema.columns
where COLUMN_NAME = 'MyColumn'

【讨论】:

【参考方案2】:

您可以使用信息架构视图:

SELECT DISTINCT TABLE_SCHEMA, TABLE_NAME
FROM Information_Schema.Columns
WHERE COLUMN_NAME = 'ID'

这是“列”视图的 MSDN 参考: http://msdn.microsoft.com/en-us/library/ms188348.aspx

【讨论】:

【参考方案3】:

您可以在信息架构中找到您要查找的内容: SQL Server 2005 System Tables and Views 我认为您需要 SQL Server 2005 或更高版本才能使用本文中描述的方法,但类似的方法可以用于早期版本。

【讨论】:

【参考方案4】:

在每个数据库级别上都非常简单

Use DatabaseName
Select * From INFORMATION_SCHEMA.COLUMNS Where column_name = 'ColName'

【讨论】:

此解决方案包括视图。有没有办法确定哪些是表,哪些是视图? 查看此内容以仅获取表或表和视图 [MSSQL] ***.com/questions/4849652/… 也适用于 mysql :) ! @DanKaufman join as in ***.com/a/30674301/125981(我知道这是旧的,但对其他人来说更容易)【参考方案5】:

如果您尝试查询 Oracle 数据库,您可能需要使用

select owner, table_name 
from all_tab_columns
where column_name = 'ColName';

【讨论】:

【参考方案6】:
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name,*
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
WHERE c.name LIKE '%YOUR_COLUMN%' 
ORDER BY schema_name, table_name;

In depth article by SQL Authority

【讨论】:

【参考方案7】:
SELECT      T.TABLE_NAME, C.COLUMN_NAME
FROM        INFORMATION_SCHEMA.COLUMNS C
            INNER JOIN INFORMATION_SCHEMA.TABLES T ON T.TABLE_NAME = C.TABLE_NAME
WHERE       TABLE_TYPE = 'BASE TABLE'
            AND COLUMN_NAME = 'ColName'

这只会返回表格并忽略任何感兴趣的人的视图!

【讨论】:

【参考方案8】:

--获取包含选定列名的表

SELECT  c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%batchno%'

成功了……

【讨论】:

以上是关于我想显示所有具有指定列名的表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中找到所有具有特定列名的表?

如何在 Teradata 数据库中查找所有具有特定列名的表?

内连接2个具有相同列名的表

选择所有具有匹配列名的表

如何查询具有基数的表以显示所有 Pk,同时还显示具有 FK 的表中的匹配元素

选择具有不同列名的表