INFORMATION_SCHEMA:这可用于在同一数据库的所有表中查找所有相同的命名列

问题描述 投票:0回答:1

我已经获得了一个新的数据库,其中包含500多个表。我可以使用INFORMATION_SCHEMA执行查询以列出所有表并在数据库中的所有表中标识那些相同的命名列。因此,从本质上讲,我希望拥有所有表的列表,并标识具有共同命名列的表。

sql information-schema
1个回答
0
投票

您可以self-join系统视图information_schema.tables

select 
    ta.column_name,
    ta.table_name,  
    tb.table_name,
from information_schema.tables ta
inner join information_schema.tables tb 
    on  ta.column_name = tb.column_name 
    and ta.table_name != tb.table_name
order by 
    ta.column_name, 
    ta.table_name,
    tb.table_name

这将为您提供多个表中使用的所有列以及相应的表名。

如果只需要表名,则:

select ta.table_name,  tb.table_name
from information_schema.tables ta
inner join information_schema.tables tb 
    on  ta.column_name = tb.column_name 
    and ta.table_name != tb.table_name
group by ta.table_name,  tb.table_name
order by ta.table_name,  tb.table_name
© www.soinside.com 2019 - 2024. All rights reserved.