我試圖完成這樣的事情:如何在子查詢中使用SHOW CREATE TABLE?
SELECT *
FROM information_schema.`tables`
JOIN (SHOW CREATE TABLE) # <-- need help here
WHERE table_schema LIKE 'tables\_%'
有沒有辦法在一個查詢中這樣做嗎?
我試圖完成這樣的事情:如何在子查詢中使用SHOW CREATE TABLE?
SELECT *
FROM information_schema.`tables`
JOIN (SHOW CREATE TABLE) # <-- need help here
WHERE table_schema LIKE 'tables\_%'
有沒有辦法在一個查詢中這樣做嗎?
Devart是正確的,你不能加入到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 */;
輸出示例:
CREATE TABLE `answers` rowid int(11) auto_increment,
id int(11) ,username varchar(200) ,answer varchar(2000) ;
沒有辦法以這種方式做到這一點。 SHOW CREATE TABLE
命令檢索數據集,但結果不能與另一個表連接。對於應用程序中需要的每個表,執行SHOW CREATE TABLE
作爲單獨的命令。
我跟着這個鏈接http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html
SHOW CREATE TABLE應該返回的列結果:表名(表)和相應的創建表的腳本文本。
然後,它應該是這個樣子:
SELECT *
FROM information_schema.`tables` ts
INNER JOIN (SHOW CREATE TABLE) sct
ON(ts.table_name=sct.table)
WHERE table_schema LIKE 'tables\_%'
我希望這有助於。我目前無法嘗試。