我正在努力完成这样的事情:
SELECT *
FROM information_schema.`tables`
JOIN (SHOW CREATE TABLE) # <-- need help here
WHERE table_schema LIKE 'tables\_%'
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个查询中执行此操作?
德瓦特是正确的,你不能加入该SHOW CREATE声明。但是,根据您的具体需要,您可以通过创建自己的SHOW CREATE语句来欺骗这一点。
如果您需要包含数据库引擎、列和表排序规则、索引等,代码的复杂性将会增加 - 但是下面的 SQL 将为您提供正确的表和字段,以及完整的数据类型。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 */;
Run Code Online (Sandbox Code Playgroud)
示例输出:
CREATE TABLE `answers` rowid int(11) auto_increment,
id int(11) ,username varchar(200) ,answer varchar(2000) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1897 次 |
| 最近记录: |