有人可以帮我解决这个mysql问题吗?我试图从一个数据库中获取所有表名。匹配的表名与显示表
在我的分贝我有这样的表:
_table1, _table2, 表3, 表4, table5_xrefs
,但我想只有不表_在开始和无_xref在结束。 所以在这个例子中我只需要table3和table4。
我使用show tables
来显示所有的表名称,并在我使用php来匹配正确的表名。我想知道如果我只能使用mysql查询来做同样的事情。
有人可以帮我解决这个mysql问题吗?我试图从一个数据库中获取所有表名。匹配的表名与显示表
在我的分贝我有这样的表:
_table1, _table2, 表3, 表4, table5_xrefs
,但我想只有不表_在开始和无_xref在结束。 所以在这个例子中我只需要table3和table4。
我使用show tables
来显示所有的表名称,并在我使用php来匹配正确的表名。我想知道如果我只能使用mysql查询来做同样的事情。
这是可能的,但你必须知道从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'
您可以在SHOW TABLES查询中use LIKE or WHERE。
是的,这是事实。我可以使用'喜欢',但我不能使用'不喜欢'或我错了 – Katie 2010-12-13 18:38:59
非常感谢。我意识到第一个查询比第二个查询快?你为什么喜欢使用那个? – Katie 2010-12-13 18:48:14
主要是为了保持一致性,我使用information_schema获取更多关于应用程序中表和字段的信息。第二个原因是我不喜欢在列名中有变量 - 它不能轻易地放入存储过程中。 – 2010-12-13 19:06:47