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