MySQL 报错:1137 - Can‘t reopen table

MySQL 报错:1137 - Can't reopen table

1. 问题

对临时表查询:

bash 复制代码
select a.ts_code,a.tsnum,b.tsnum from 
	(select t.ts_code ,count(*) tsnum from tmp_table t group by t.ts_code  having count(*) > 20 and count(*)< 50 ) a ,
	(select t.ts_code ,count(*) tsnum from tmp_table t group by t.ts_code  having count(*) > 30 and count(*)< 100 ) b
where a.ts_code=b.ts_code;

报错:

1137 - Can't reopen table: 't'

在正常表中,肯定是可以的。

让人迷惑了一下子。

2.原因

MySQL中出现错误1137 "Can't reopen table "通常是由于在同一个查询中多次引用了同一个临时表。根据MySQL的限制,不能在同一查询中多次引用一个临时表,即使是使用不同的别名,这个限制也适用于存储过程中对临时表的多次引用。

  • 解决方案
    (1)使用不同的临时表:如果你需要在查询中多次使用临时表,可以考虑使用多个不同表名的临时表来存储中间结果。
    (2)使用持久化表:把临时表拷贝到正常表里,使用持久化表(非临时表)来代替临时表,因为持久化表没有这样的限制。
相关推荐
RestCloud7 小时前
4中常见的数据集成方式
数据库
咯哥布林7 小时前
Ubuntu24安装MySQL8.4
mysql
Databend8 小时前
超 10 倍查询加速,N-Gram Index 设计与优化全解析
数据库
爱可生开源社区8 小时前
SCALE:一个面向专业级任务的大语言模型 SQL 能力开源评测框架
数据库
HyggeBest8 小时前
Mysql之undo log、redo log、binlog日志篇
后端·mysql
星环科技TDH社区版9 小时前
星环科技产品可存储的表格式功能介绍以及创建示例
大数据·数据库
Tapdata13 小时前
全球 DaaS 市场研究报告上线,聚焦数据服务化趋势与行业演进路径
数据库
李少兄14 小时前
MySQL 默认连接数
数据库·mysql
刘一说14 小时前
资深Java工程师的面试题目(六)数据存储
java·开发语言·数据库·面试·性能优化
江沉晚呤时14 小时前
EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库
java·开发语言·数据库