iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >使用MySQL实现select into临时表的功能
  • 702
分享到

使用MySQL实现select into临时表的功能

2024-04-02 19:04:59 702人浏览 独家记忆
摘要

目录Mysql select into临时表select into 临时表create 临时表mysql临时表(可以将查询结果存在临时表中)创建临时表可以将查询结果寄存my

MySQL select into临时表

最近在编写sql语句时,遇到两次将数据放temp表,然后将两次的temp表进行inner join,再供后续insert数据时使用的场景。

写完后发现执行耗时较长,需要优化,于是将一条长长的sql语句拆分成一个sql脚本,用临时表去暂存数据后再进行inner join。

select into 临时表

首先想到的是使用select into这个写法:

select * into temp_test from user where id=007;

写完在Navicat执行报错,发现MySQL居然是不支持select into这种写法的,没办法,只能转换思路。

这个时候我又想起来有一个create table as select * from old_table的用法,想着是不是可以通过select出来的数据直接创建一张临时表。

写完去Navicat执行,这次又报错了:

Statement violates GTID consistency: CREATE TABLE ... SELECT.

搜索资料发现,由于MySQL在5.6及更高的版本添加了enforce_gtid_consistency这个参数,默认设置为true, 只允许保证事务安全的语句被执行。

没招儿,还得用原始方法去实现。

create 临时表

由于供后续使用的字段不超过十个,不算多,于是通过create方式创建表,后续使用数据后再删除这个表,逻辑上这就成了一个临时表。

大致的写法如下:

USE database;
-- 设置变量
SET @testCode='T001';
-- 创建临时表
DROP TABLE IF EXISTS temp_test;
CREATE TABLE IF NOT EXISTS `temp_test`(
`name` VARCHAR(255),
`caption` VARCHAR(255),
`order` INT(11),
...
`entityId` BIGINT(20)
);
INSERT INTO temp_test
select item.name,item.caption,item.order,item.id from item item
inner join base base on base.id=item.baseid
where base.num='test01'
and base.id='T01'
select id into @itemid from temp_test;
update user set systemid=@itemid where `code`=@testCode;
...
INSERT INTO `base` (`userId`,`entityId`,`name`,`caption`, ...)
SELECT tpitem.entityId,tpitem.CONCAT('pre_',tpitem.name),tpitem.caption,tpitem.order,...
from
(
select * from temp_test test inner join temp_test2 test2 on test.entityid=test2.entityid
) tpitem
WHERE NOT EXISTS (SELECT 1 FROM item WHERE `code`=@testCode limit 1);
-- 删除临时表
DROP TABLE temp_test;

mysql临时表(可以将查询结果存在临时表中)

创建临时表可以将查询结果寄存

报表制作的查询sql中可以用到。

(1)关于寄存方式,mysql不支持:select * into tmp from maintenanceprocess

(2)可以使用:

create table tmp (select ...)

举例:

#单个工位检修结果表上部

drop table if EXISTS tmp_单个工位检修结果表(检查报告)上部;
 
create table tmp_单个工位检修结果表(检查报告)上部 (select workAreaName as '机器号',m.jobNumber as '检修人员编号',u.userName as '检修人员姓名',loginTime as '检修开始时间',
 
CONCAT(FLOOR((TIME_TO_SEC(exitTime) - TIME_TO_SEC(loginTime))/60),'分钟') as '检修持续时长'
 
from maintenanceprocess as m LEFT JOIN user u ON m.jobNumber = u.jobNumber where m.jobNumber = [$检修人员编号] and loginTime = [$检修开始时间]);#创建临时表
 
select * from tmp_单个工位检修结果表(检查报告)上部;

备注:[$检修开始时间]是可输入查询的值

(3)创建临时表的另一种方式举例:

存储过程中:

BEGIN
 
#Routine body Goes here...
 
declare cnt int default 0;   
 
declare i int default 0;   
 
set cnt = func_get_splitStringTotal(f_string,f_delimiter);   
 
DROP TABLE IF EXISTS `tmp_split`;   
 
create temporary table `tmp_split` (`val_` varchar(128) not null) DEFAULT CHARSET=utf8;   
 
while i < cnt   
 
do   
 
set i = i + 1;   
 
insert into tmp_split(`val_`) values (func_splitString(f_string,f_delimiter,i));   
 
end while;
 
END

mysql把select结果保存为临时表,有2种方法

第一种,建立正式的表,此表可供你反复查询

drop table if exists a_temp;
create table a_temp as
select 表字段名称 from 表名称

或者,建立临时表,此表可供你当次链接的操作里查询.

create temporary table 临时表名称
select 表字段名称 from 表名称

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: 使用MySQL实现select into临时表的功能

本文链接: https://www.lsjlt.com/news/168390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用MySQL实现select into临时表的功能
    目录MySQL select into临时表select into 临时表create 临时表mysql临时表(可以将查询结果存在临时表中)创建临时表可以将查询结果寄存my...
    99+
    2024-04-02
  • mysql中insert into select和select into的使用和区别介绍
    本篇内容介绍了“mysql中insert into select和select into的使用和区别介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一...
    99+
    2024-04-02
  • mysql临时表怎么使用
    这篇文章主要介绍了mysql临时表怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql临时表怎么使用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • MySQL中临时表如何使用
    今天就跟大家聊聊有关MySQL中临时表如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL如何使用临时表 【临时表存储】MyS...
    99+
    2024-04-02
  • MySQL内部临时表的具体使用
    目录UNION表初始化执行语句UNION RESULTUNION ALLGROUP BY内存充足执行语句执行过程排序过程ORDER BY NULL内存不足执行...
    99+
    2024-04-02
  • mysql创建临时表怎么使用
    要使用MySQL中的临时表,可以按照以下步骤操作: 使用CREATE TEMPORARY TABLE语句创建临时表。语法如下: ...
    99+
    2024-04-09
    mysql
  • 怎么在mysql中使用临时表
    这篇文章将为大家详细讲解有关怎么在mysql中使用临时表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、创建临时表可以将查询结果寄存(1)关于寄存方式,m...
    99+
    2024-04-02
  • 如何在MySQL中使用临时表
    这期内容当中小编将会给大家带来有关如何在MySQL中使用临时表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。创建临时表很容易,给正常的CREATE TABLE语句加上TE...
    99+
    2024-04-02
  • MySQL中Update、select联用操作单表、多表,及视图与临时表的区别
    一、MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin。SQL语言中不要显示的出现select关键字 updat...
    99+
    2024-04-02
  • MySQL 5.7临时表空间的使用方法
    这篇文章将为大家详细讲解有关MySQL 5.7临时表空间的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。导读MySQL 5.7的目标是成为发布以来最安全的MySQ...
    99+
    2024-04-02
  • mysql临时表的使用方法是什么
    在MySQL中,临时表是一种特殊类型的表,它只在当前会话中存在并且在会话结束时会自动被销毁。临时表对于临时存储中间结果或者处理大量数...
    99+
    2024-04-09
    mysql
  • MySQL临时表使用的方法是什么
    在MySQL中,可以使用以下方法创建和使用临时表: 使用CREATE TEMPORARY TABLE语句创建临时表: CREAT...
    99+
    2024-05-06
    mysql
  • 如何使用JavaScript实现select所支持的功能
    小编给大家分享一下如何使用JavaScript实现select所支持的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • mysql临时表的作用是什么
    今天小编给大家分享一下mysql临时表的作用是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-05-25
    mysql
  • mysql临时表使用不了怎么解决
    如果MySQL临时表无法使用,可能是由于以下几个原因导致的: 没有足够的权限:请确保你有创建临时表的权限,可以尝试使用SHOW ...
    99+
    2024-03-08
    mysql
  • 怎么使用elementui的select实现多选添加功能
    今天小编给大家分享一下怎么使用elementui的select实现多选添加功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • JS中如何实现Select下拉列表类功能
    小编给大家分享一下JS中如何实现Select下拉列表类功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体代码如下所示:<...
    99+
    2024-04-02
  • 在什么情况下会使用mysql临时表
    这篇文章主要介绍在什么情况下会使用mysql临时表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL在很多情况下都会用到临时表,总结一下什么时候会用到临时表:什么是临时表:My...
    99+
    2024-04-02
  • 使用MySQL生成最近24小时整点时间临时表
    目录生成最近24小时整点生成最近30天生成最近12个月总结 生成最近24小时整点 SELECT -- 每向下推1行, @i比上次减去1 b.*, i.*, DATE_FORMAT( DA...
    99+
    2024-01-29
    mysql 生成临时表 sql临时表的使用 mysql 临时表
  • Oracle 临时表空间SQL语句的实现
    目录临时表空间概念以下总结了关于 Oracle 数据库临时表空间的相关 SQL 语句: Oracle 临时表空间创建和添加数据文件: 查看当前默认临时表空间: 查询temp表空间使用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作