【问题标题】:Mysql - Union show tables?Mysql - 联合显示表?
【发布时间】:2011-06-06 05:10:01
【问题描述】:

有没有办法使用 UNION 或 JOIN 列出所有表和列的名称?

【问题讨论】:

    标签: mysql select union


    【解决方案1】:

    如果你想要一个模式中的所有表和列,不需要使用UNION和BIND,只需将数据加入

    • information_schema.columns
    • information_schema.tables

    会成功的。在以下位置查看两者的详细信息:

    http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

    一个可以达到您的目标的最低限度的示例查询是:

    SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    

    但同样,可能需要根据表名连接两者 - 取决于您的确切目标。

    如果您只想要名称中包含 UNION/BIND 的表和名称中包含 UNION/BIND 的列,那么执行此操作的两个简单查询是:

    SELECT TABLE_NAME from INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME LIKE '%UNION%' or TABLE_NAME LIKE '%BIND%'
    

    SELECT TABLE_NAME, COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE '%UNION%' or TABLE_NAME LIKE '%BIND%'
    

    【讨论】:

    • 谢谢。我不想同时列出所有表和列,抱歉不清楚。我会试一试,再次感谢!
    • 我明白了——我不确定如何阅读您的问题。我更新了我的答案,希望对您有所帮助。
    【解决方案2】:

    您可以使用 INFORMATION_SCHEMA。下面的查询会很有用:

    SELECT 'COLUMN' as Match_Type, 
           column_name as MATCH_NAME, 
           table_name, 
           table_schema
     FROM INFORMATION_sCHEMA.COLUMNS 
    WHERE COLUMN_NAME LIKE '%UNION%' 
       OR COLUMN_NAME LIKE '%BIND%'
    UNION ALL
    SELECT 'TABLE' as Match_Type, 
            table_name  as MATCH_NAME, 
            table_name, 
            table_schema
     FROM INFORMATION_sCHEMA.TABLES
    WHERE TABLE_NAME LIKE '%UNION%'
       OR TABLE_NAME LIKE '%BIND%'
    

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      相关资源
      最近更新 更多