mysql 把查询结果插入到表里
时间:2021-09-08
本文章向大家介绍mysql 把查询结果插入到表里,主要包括mysql 把查询结果插入到表里使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
假设将所有男同学都分到id为1的班级
从class(班级表)中查出id为1的班级名,从student(学生表)中查到所有男的学生id和名字,插入到学生班级表中
方式1:
insert into tbl_stu_class
(
SELECT tbl_class.cl_id, tbl_student.st_id
FROM tbl_class
JOIN tbl_student
WHERE tbl_class.cl_name = '一年级一班'
AND tbl_student.sex = '男'
)
注意:此种方式只适合查询出的数据集结构和要插入的表结构一样的情况!
即:tbl_stu_class 表结构为:
cl_name | st_id | st_name |
---|---|---|
…… | …… | …… |
事实上方式一已经够用了,你只需要把查询出来的数据集结构弄的和要插入的表结构一样即可。
方式二存储过程作为了解,至于存储过程的详情我也不太了解,想要了解的小伙伴可自行百度。
方式二: 使用存储过程
此方式适合任何情况
# 创建存储过程前先检查是否存在,存在就删除
DROP PROCEDURE IF EXISTS insert_stu_class;
# 存储过程
DELIMITER //
CREATE PROCEDURE insert_stu_class(IN param VARCHAR(50))
BEGIN
# 该变量用于标识是否还有数据需要遍历
DECLARE flag INT DEFAULT 0;
# 创建一个变量用来存储遍历过程中的值
DECLARE stu_id INT;
DECLARE cl_id INT DEFAULT (SELECT cl_id FROM tbl_class WHERE cl_name = param);
# 查询出需要遍历的数据集合
DECLARE idList CURSOR FOR (SELECT stu_id FROM tbl_student WHERE sex = '男');
# 查询是否有下一个值,没有将标识设为1,相当于hasNext
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
# 打开游标
OPEN idList;
# 取值设置到临时变量中
FETCH idList INTO stu_id;
# 遍历未结束就一直执行
WHILE flag != 1 DO
# 插入数据到tbl_group_role中
INSERT INTO tbl_stu_class VALUE (cl_id, stu_id);
#游标向后移一位
FETCH idList INTO stu_id;
END WHILE;
CLOSE idList;
END;
//
CALL insert_stu_class('一年级一班');
//用完后想要删除存储过程的调用第一句删除存储过程即可
原文地址:https://www.cnblogs.com/Lv-orange/p/15243075.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 请不要再使用判断进行参数校验了
- 检测假新闻:比较不同的分类方法的准确率
- SpringBoot下载xlsx模板,导出excel数据
- 如何利用机器学习和Gatsby.js创建假新闻网站
- Spring Security 实战干货: 401和403状态
- Spring Data R2DBC响应式操作MySQL
- 项目端口可以设置为 6666 吗?
- 【JS】666- window.reqeustIdleCallback方法详解
- 一个无聊的宏定义
- windows的Ubuntu子系统ssh和ftp
- 面试官问:如何设计一个安全的对外接口?
- [树莓派公网远程监控]autossh反向代理
- 用 LDSC 计算遗传度以及遗传相关性
- SVG 入门指南(初学者入门必备)
- 快速介绍Python数据分析库pandas的基础知识和代码示例