mysql数据库怎么把查询出来的数据生成临时表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库怎么把查询出来的数据生成临时表相关的知识,希望对你有一定的参考价值。

mysql 需要创建隐式临时表来解决某些类型的查询。往往查询的排序阶段需要依赖临时表。例如,当您使用 GROUP BY,ORDER BY 或DISTINCT 时。这样的查询分两个阶段执行:首先是收集数据并将它们放入临时表中,然后是在临时表上执行排序。
对于某些 UNION 语句,不能合并的 VIEW,子查询时用到派生表,多表 UPDATE 以及其他一些情况,还需要使用临时表。如果临时表很小,可以到内存中创建,否则它将在磁盘上创建。MySQL 在内存中创建了一个表,如果它变得太大,就会被转换为磁盘上存储。内存临时表的最大值由 tmp_table_size 或 max_heap_table_size 值定义,以较小者为准。MySQL 5.7 中的默认大小为 16MB。如果运行查询的数据量较大,或者尚未查询优化,则可以增加该值。设置阈值时,请考虑可用的 RAM 大小以及峰值期间的并发连接数。你无法无限期地增加变量,因为在某些时候你需要让 MySQL 使用磁盘上的临时表。
注意:如果涉及的表具有 TEXT 或 BLOB 列,则即使大小小于配置的阈值,也会在磁盘上创建临时表。
参考技术A 创建临时表
方法一:
create table #临时表名(字段1 约束条件,
字段2 约束条件,
.....)
create table ##临时表名(字段1 约束条件,
字段2 约束条件,
.....)
方法二:
select * into #临时表名 from 你的表;
select * into ##临时表名 from 你的表;
注:以上的#代表局部临时表,##代表全局临时表

查询临时表
select * from #临时表名;
select * from ##临时表名;

删除临时表
drop table #临时表名;
drop table ##临时表名;

sql中怎样将查询出来的结果创建成临时表

参考技术A 其实视图最典型的用途就是这样了,做起来也比较容易,不过楼主要求临时表,那么就试试吧,一般来说数据量大的用表快,不然就建视图,不知道楼主是用什么数据库的呢? 如果是ms sql server的话可以:

SELECT * INTO #TEMPTABLENAME
FROM
(
SELECT xxxxxx //你的查询语句

)AS table_source //这个别名是必须的

WHERE xxxxxxxx //你需要的where判断
;

COMMIT或ROLLBACK后可自动删除该临时表

可以参考

等网址
参考技术B 其实视图最典型的用途就是这样了,做起来也比较容易,不过楼主要求临时表,那么就试试吧,一般来说数据量大的用表快,不然就建视图,不知道楼主是用什么数据库的呢? 如果是ms sql server的话可以:

SELECT * INTO #TEMPTABLENAME
FROM
(
SELECT xxxxxx //你的查询语句

)AS table_source //这个别名是必须的

WHERE xxxxxxxx //你需要的where判断
;

COMMIT或ROLLBACK后可自动删除该临时表

可以参考

等网址
参考技术C select id,name into #p from table 参考技术D 在sql2005中,你可以使用 with as 第5个回答  2011-07-15 连接Oracle的数据库的OraDBHelper公共类写在DAL层,OraDBHelper类引用OracleClient
当BLL层引用DAL层时,程序提示OracleConnection 等函数时提示过期。 UI层引用不到BLL层,当把OraDBHelper类删除时正常本回答被提问者采纳

以上是关于mysql数据库怎么把查询出来的数据生成临时表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL批量插入查询出来的数据

mysql 怎么把查询结果作为表名继续查询

SQL如何把查询出来的多个表创建成一个临时表

mysql多表查询合并到一个临时表,怎么再加一列并把各自的表名加上?

mysql怎么把固定的几个字符串,转成列的形式作为临时表查询

sql中怎样将查询出来的结果创建成临时表