2

我需要只使用一个查询来选择没有视图的表名范围:

例子:

SHOW FULL TABLES LIKE '%table%' WHERE "Table_type"<>'VIEW'

MySQL 不允许在一个查询中使用这两个运算符,它使用Tables_in_(mydbname)包含 DB 名称的愚蠢的列名,而不是使用像“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 因为对这个表的访问可能会受到托管服务提供商的限制(或者我错了?)而且我的应用程序是为了广泛分发。

你会给我什么建议?

4

1 回答 1

4

查询INFORMATION_SCHEMA,特别是TABLESCOLUMNS表对您来说很有趣。

一个例子:

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 ...
于 2012-05-28T08:38:29.830 回答