有人可以帮我解决这个mysql问题吗?我正试图从db获取所有表名。
在我的数据库中,我有以下表格:
_table1, _table2, 表3, 表4, table5_xrefs
但是我想在开头只获得没有_的表,最后没有_xref。 所以在这个例子中我只需要table3和table4。
我正在使用show tables
来显示所有表名,并在我使用php匹配正确的表名后。我想知道我是否可以只使用mysql查询来做同样的事情。
答案 0 :(得分:45)
这是可能的,但您必须知道从SHOW TABLES
查询返回的列名是字符串tables_in_
和数据库名称的串联。对于数据库test
:
SHOW TABLES
WHERE tables_in_test NOT LIKE '\_%'
AND tables_in_test NOT LIKE '%\_xrefs'
但我更愿意使用information_schema
数据库来获取此信息:
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = SCHEMA() /* = 'test'*/
AND TABLE_NAME NOT LIKE '\_%'
AND TABLE_NAME NOT LIKE '%\_xrefs'
答案 1 :(得分:0)
您可以在SHOW TABLES查询中use LIKE or WHERE。