首页 > 数据库 >在MySQL中,你可以使用动态SQL和存储过程来根据元数据表查询多个表,并将结果集合并。以下是一个具体的示例,展示如何实现这一目标:假设你有一个元数据表table,它有一个字段table_name,其

在MySQL中,你可以使用动态SQL和存储过程来根据元数据表查询多个表,并将结果集合并。以下是一个具体的示例,展示如何实现这一目标:假设你有一个元数据表table,它有一个字段table_name,其

时间:2024-06-03 17:00:39浏览次数:29  
标签:cur -- 数据表 字段 result table DECLARE name

DELIMITER $$

CREATE PROCEDURE MergeDataFromTables()
BEGIN
    -- 游标声明
    DECLARE done INT DEFAULT FALSE;
    DECLARE tbl_name VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT 表明 FROM table_col;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- 创建临时表,结构与目标表相同
    DROP TEMPORARY TABLE IF EXISTS temp_result;
    CREATE TEMPORARY TABLE temp_result LIKE table1;

    -- 开启游标
    OPEN cur;

    -- 循环读取表名并执行查询
    read_loop: LOOP
        FETCH cur INTO tbl_name;
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- 动态构建并执行SQL查询
        SET @sql = CONCAT('INSERT INTO temp_result SELECT * FROM ', tbl_name);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;

    -- 关闭游标
    CLOSE cur;

    -- 从临时表中选择并显示合并结果
    SELECT * FROM temp_result;
END$$

DELIMITER ;

CALL MergeDataFromTables();

 

DELIMITER $$
CREATE PROCEDURE MergeDataFromTables()BEGIN    -- 游标声明    DECLARE done INT DEFAULT FALSE;    DECLARE tbl_name VARCHAR(255);    DECLARE cur CURSOR FOR SELECT 表明 FROM table_col;    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    -- 创建临时表,结构与目标表相同    DROP TEMPORARY TABLE IF EXISTS temp_result;    CREATE TEMPORARY TABLE temp_result LIKE table1;
    -- 开启游标    OPEN cur;
    -- 循环读取表名并执行查询    read_loop: LOOP        FETCH cur INTO tbl_name;        IF done THEN            LEAVE read_loop;        END IF;
        -- 动态构建并执行SQL查询        SET @sql = CONCAT('INSERT INTO temp_result SELECT * FROM ', tbl_name);        PREPARE stmt FROM @sql;        EXECUTE stmt;        DEALLOCATE PREPARE stmt;    END LOOP;
    -- 关闭游标    CLOSE cur;
    -- 从临时表中选择并显示合并结果    SELECT * FROM temp_result;END$$
DELIMITER ;
CALL MergeDataFromTables();  

标签:cur,--,数据表,字段,result,table,DECLARE,name
From: https://www.cnblogs.com/wutanghua/p/18229231

相关文章

  • Spring Boot使用GraalVM编译为native excutable app的日志示例及主要步骤说明
    日志示例[INFO]---native-maven-plugin:0.9.28:compile(default-cli)@my-app---[INFO]FoundGraalVMinstallationfromGRAALVM_HOMEvariable.[INFO][graalvmreachabilitymetadatarepositoryforch.qos.logback:logback-classic:1.4.14]:Configurationdirector......
  • iview table 表头单元格合并
    <Tableborder:columns="cusColumns":data="cusData"></Table>cusColumns:[{title:'门店/节点',align:'center',//fixed:'left',minWidth:100,render:(h,para......
  • MyBatis实现MySQL表字段及结构的自动增删
    前言在开发过程中,总会涉及到数据库表结构字段的增加或者删除,或者是索引的增加和减少,这个时候能把修改表结构字段这些工作都交给程序来进行,那能大大方便开发。正好有一个现成的工具可以在springboot里面实现这个流程。介绍mybatis-enhance-actable上述是gitee链接。这个工具是m......
  • vue-elementui中el-table跨页选择和v-if导致列错乱/选择框无法显示
    在vue-elementui中使用el-table,当type="selection"的时候,分页数据进行不同页跳转选择需要这种功能的时候我们需要在el-table的标签上为每个el-table-column都创建一个id;所以就用到了row-key="id"这个属性;然后我们就需要在el-table-column为type="selection"添加一个属性reserve......
  • ES截取内嵌字段分组
    ES截取内嵌字段分组1背景根据ES的内嵌字段中的@符号截取第n个@符号之前的字符进行分组统计文档数量。该字段格式为:@xxx@yyy@zzz@、@aaa11@bbb222@ccc333@2映射{"ads_hmap_event_info":{"mappings":{"properties":{"CJSJ":{"type......
  • Ubuntu server 24 (Linux) IPtables 双网卡 共享上网NAT 安装配置DHCP
    一 开启路由转发功能sudovim/etc/sysctl.confnet.ipv4.ip_forward=1sudosysctl-p二 安装DHCP#更新软件包列表:sudoaptupdate#安装DHCP服务器sudoaptinstallisc-dhcp-server#修改监听网卡,根据实际修改sudovi/etc/default/isc-dhcp-serverINTERFACESv4=......
  • Java中java.awt.FlowLayout的常量字段值
    流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流的方向取决于容器的componentOrientation属性,它可能是以下两个值中的一个:ComponentOrientation.LEFT_TO_RIGHTComponentOrientation.RIGHT_TO_LEFT流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一......
  • 【Python】成功解决TypeError: ‘method’ object is not subscriptable
    【Python】成功解决TypeError:‘method’objectisnotsubscriptable 下滑即可查看博客内容......
  • Stable Diffusion AI绘画:从提示词到模型出图的全景指南
    随着人工智能技术的不断发展,AI智能绘图已经成为一种全新的创意工具。在这其中,StableDiffusion以其强大的功能和易用性,受到了设计师们的广泛欢迎。本文将为你揭开StableDiffusion的神秘面纱,带你了解如何利用这一神器,快速打造出令人惊叹的平面设计作品。一、StableDiffusion......
  • MyBatis查询秘籍:如何只查询指定字段
    哈喽,大家好,我是木头左!一、引言在日常的软件开发中,经常需要从数据库中查询数据。而MyBatis作为Java持久层框架的一种,提供了非常方便的查询功能。但是,当需要查询多个字段时,MyBatis会将整个表的数据全部查询出来,这在大数据量的情况下是非常低效的。那么,如何在MyBatis中只查询指定......