我只需要使用一个查询来选择没有视图的表名范围:
示例:
SHOW FULL TABLES LIKE '%table%' WHERE "Table_type"<>'VIEW'
MySQL不允许在一个查询中使用这两个运算符,并且它使用包含数据库名称的Tables_in_(mydbname)
之类的愚蠢列名,而不是像“Table_name”那样使用简单的列名。问题是我不知道数据库名称,所以我不能使用以下查询:
SHOW FULL TABLES WHERE "Table_type"<>'VIEW' AND "Tables_in_????" LIKE '%table%'
使用数字代替名称会很棒:
SHOW FULL TABLES WHERE COLUMN(1) LIKE '%table%' AND COLUMN(2) <>'VIEW'
但没有这样的功能。
我无法使用INFORMATION_SCHEMA,因为托管服务提供商可以限制对此表的访问(或者我错了?),我的应用程序是广泛分发的。
你会告诉我什么?
答案 0 :(得分:4)
查询INFORMATION_SCHEMA
,特别是TABLES
和COLUMNS
表对您有用。
一个例子:
SELECT *
FROM INFORMATION_SCHEMA.TABLES t
JOIN INFORMATION_SCHEMA.COLUMNS c
ON t.TABLE_CATALOG = c.TABLE_CATALOG
AND t.TABLE_SCHEMA = c.TABLE_SCHEMA
AND t.TABLE_NAME = c.TABLE_NAME
WHERE [some field] LIKE '%some_value%'
AND ...