Mysql - 联盟显示表?

时间:2011-01-09 20:49:03

标签: mysql select union

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

2 个答案:

答案 0 :(得分:5)

如果你想要一个模式中的所有表和列,不需要使用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%'

答案 1 :(得分:0)

您可以使用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%'