我正在尝试完成这样的事情:
SELECT * FROM information_schema.`tables` JOIN (SHOW CREATE TABLE) # <-- need help here WHERE table_schema LIKE 'tables\_%'
有一种方法可以在一个查询中执行此操作吗?
Devart是正确的,您不能加入该SHOW CREATE语句。但是,根据您的确切需求,您可以通过创建自己的SHOW CREATE语句来欺骗它。
SHOW CREATE
如果您需要包括数据库引擎,列和表的归类,索引等,则代码的复杂性将会增加- 但是下面的SQL将为您提供正确的表和字段以及数据类型。我相信您可以通过information_schema.columns更深入地研究内容来进一步扩展它。
information_schema.columns
SELECT CONCAT('CREATE TABLE `',t.TABLE_NAME,'` ', GROUP_CONCAT(CONCAT(c.COLUMN_NAME,' ',c.COLUMN_TYPE,' ',c.EXTRA) SEPARATOR ','),';') AS CreateStatement FROM information_schema.tables t INNER JOIN information_schema.columns c ON t.TABLE_NAME=c.TABLE_NAME /* WHERE STATEMENT IF NEEDED */;
样本输出:
CREATE TABLE `answers` rowid int(11) auto_increment, id int(11) ,username varchar(200) ,answer varchar(2000) ;