【问题标题】:How to find common fileds from all tables in a database?如何从数据库中的所有表中查找公共字段?
【发布时间】:2012-10-31 11:33:53
【问题描述】:

我正在尝试找到一种方法来从数据库中的所有表中获取所有公共字段。 这是我的代码

SELECT t.TABLE_NAME 
FROM information_schema.TABLES t
INNER JOIN information_schema.COLUMNS c 
   ON t.TABLE_NAME=c.TABLE_NAME
WHERE t.TABLE_SCHEMA = '<database_name>'
   AND c.COLUMN_NAME = '<column_name>'
GROUP BY t.TABLE_NAME

我想在不输入特定列名的情况下做同样的事情。

【问题讨论】:

    标签: mysql inner-join columnname


    【解决方案1】:

    已编辑

    SELECT col,cnt from (
    SELECT c.COLUMN_NAME col, count(*) cnt
    FROM information_schema.TABLES t
    INNER JOIN information_schema.COLUMNS c 
       ON t.TABLE_NAME=c.TABLE_NAME
    WHERE t.TABLE_SCHEMA = '<database_name>'
    GROUP BY c.COLUMN_NAME 
    ) tbl WHERE cnt>=2;
    

    【讨论】:

    • 是的,我想从所有表的所有列中获取公共列
    • 好的,我得到了一些结果,但我认为它不正确。最大计数应为 23。我的数据库中有 23 个表。所以同名列最多可以重复23次。我收到的计数是 105。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2010-09-19
    • 1970-01-01
    • 2021-10-21
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多