有没有办法使用UNION或JOIN列出所有表名和列名?
答案 0 :(得分:5)
如果你想要一个模式中的所有表和列,不需要使用UNION和BIND,只需加入
中的数据会做到这一点。详见两者:
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%'