表結構執行一個:生成多個查詢字符串,並通過一個
CREATE TABLE IF NOT EXISTS mysql.`my_autoinc` (
`table_schema` VARCHAR(64) NOT NULL,
`table_name` VARCHAR(64) NOT NULL,
`auto_increment` INT(11) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`table_schema`, `table_name`)
) ENGINE=InnoDB;
問題1:在任何DB命名table1
或table2
所有表的 名單。
REPLACE INTO mysql.`my_autoinc`
SELECT table_schema, table_name, NULL AS `auto_increment`
FROM information_schema.tables
WHERE table_name IN ("table1", "table2");
查詢1可以生成
table_schema | table_name | auto_increment
===============================================
client_1 | table1 | NULL
client_1 | table2 | NULL
client_2 | table1 | NULL
client_3 | table1 | NULL
問題2:查詢字符串的 列表。
SELECT CONCAT(
'REPLACE INTO my_autoinc ',
'SELECT "',table_schema,'", "',table_name,'", MAX(Id) FROM ',
'('
'SELECT MAX(Id) AS Id FROM ', table_schema, '.', table_name,
' UNION ',
'SELECT MAX(Id) AS Id FROM ', table_schema, '_history.', table_name, '_history',
') t'
) AS 'queries'
FROM my_autoinc;
當被執行由查詢2生成的查詢的列表。
table_schema | table_name | auto_increment
===============================================
client_1 | table1 | 99
client_1 | table2 | 60
client_2 | table1 | 299
client_3 | table1 | 399
我已經嘗試過:GROUP_CONCAT
但字符串的級聯長度超過1000所以,不能執行該長度的查詢。
更新:我不能做multiple statements in a prepare。
需要解決方案:要執行查詢生成的查詢2 查詢2一個接一個。
但是,我不能準備多個語句。 http://stackoverflow.com/a/11635064/1753174 – bkmagnetron