gpt4 book ai didi

mysql - 生成多个查询字符串并一一执行

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:14 25 4
gpt4 key购买 nike

表结构:

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:任何数据库中名为 table1table2 的所有表的列表。

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 生成的查询。

最佳答案

您可以从 GROUP_CONCAT 设置最大长度

-- for the session
SET SESSION group_concat_max_len = 1000000;

-- or global
SET GLOBAL group_concat_max_len = 1000000;

关于mysql - 生成多个查询字符串并一一执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com