gpt4 book ai didi

mysql - 对表列表中的每个条目运行查询

转载 作者:行者123 更新时间:2023-11-29 15:59:29 25 4
gpt4 key购买 nike

我打算编写一个过程来对提供的列表中的每个表运行查询(可以是逗号分隔的列表或表 - 尚未决定)

我首先创建一个 while 循环来迭代提供的列表中的每个元素。已经能够提取每个元素,但我不知道如何对提取的元素/表运行查询。

DELIMITER $$
DROP PROCEDURE IF EXISTS retain_demo_clients$$
CREATE PROCEDURE retain_demo_clients()
BEGIN

DECLARE counter INT(10);
DECLARE client_tables VARCHAR(255);
DECLARE table_count INT(10);
DECLARE table_in_process VARCHAR(255);

SET counter = 1;
SET table_count = 3;
SET client_tables = 'client_table, somerandomstuff, somemorestuff';


WHILE (counter < table_count +1) DO
SET table_in_process = substring_index(substring_index(client_tables, ',',counter),',',-1);
SELECT table_in_process;
SET counter = counter +1;
END WHILE;


END$$
DELIMITER ;

CALL retain_demo_clients();

我希望执行类似“select * from table_in_process”之类的操作。如果有更好的方法来循环表列表,我也将不胜感激。

这里是 DBFiddle 链接,如果有人想修补的话:https://www.db-fiddle.com/f/v6EMsiWvXFrBoNLgoZwDVX/1

最佳答案

您可以使用EXECUTE来运行代表单个语句的文本

SET @someQuery =  CONCAT('SELECT * FROM ', table_in_process ) ;
PREPARE preparable_stmt FROM @someQuery;
EXECUTE preparable_stmt;

关于mysql - 对表列表中的每个条目运行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297195/

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