目的
数据库里有上百张表,需要将表名结尾是 "_case" 字段的表合并导出。
目前只能将含有 "_case" 字段的表名查询出来,后续应该使用循环查询,不知道该如何实现。
SELECT table_name
FROM information_schema.TABLES
WHERE table_schema='shujuheji'
AND table_type = 'base table'
AND table_name LIKE '%_case';
可以通过以下步骤实现:
使用上述SELECT语句查询所有包含 "_case" 字段的表名。
将查询结果存储在一个数组中。
使用循环结构,对每个表名执行相同的查询操作。
将查询结果存储在一个新的数据表中。
以下是一个示例代码:
DELIMITER $$
CREATE PROCEDURE merge_case_tables()
BEGIN
DECLARE table_name VARCHAR(255);
DECLARE done INT DEFAULT 0;
DECLARE cur CURSOR FOR
SELECT table_name
FROM information_schema.TABLES
WHERE table_schema='shujuheji'
AND table_type = 'base table'
AND table_name LIKE '%_case';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
DROP TEMPORARY TABLE IF EXISTS case_data;
CREATE TEMPORARY TABLE case_data(
case_data_id INT PRIMARY KEY AUTO_INCREMENT,
column1 VARCHAR(255),
column2 VARCHAR(255),
column3 VARCHAR(255)
);
OPEN cur;
REPEAT
FETCH cur INTO table_name;
IF NOT done THEN
SET @sql = CONCAT('INSERT INTO case_data (column1, column2, column3) SELECT column1, column2, column3 FROM ', table_name);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
UNTIL done END REPEAT;
CLOSE cur;
END$$
DELIMITER ;
不知道你这个问题是否已经解决, 如果还没有解决的话: