weixin_42298534 2008-11-14 17:37
浏览 413
已采纳

mysql临时表子查询

DROP TABLE IF EXISTS TEMP_RESULT_Copy ;
    CREATE TEMPORARY TABLE TEMP_RESULT (
    #CREATE TABLE PROSPERITI.TEMP_RESULT(
        COUNT_USER BIGINT,
        STATUS_USER VARCHAR(20),
        PROGRAM_NAME VARCHAR(255),
        RECEIVE VARCHAR(255),
        SEND VARCHAR(255),
        elig_type varchar(20),
        PROGRAM_ID BIGINT
    );

我在一个存储过程里面有这样一个子临时表,往里面放了很多东东,现在要子查询出来,如何实现
[b]问题补充:[/b]
DROP TABLE IF EXISTS TEMP_RESULT_Copy ;
CREATE TEMPORARY TABLE TEMP_RESULT (
#CREATE TABLE PROSPERITI.TEMP_RESULT(
COUNT_USER BIGINT,
STATUS_USER VARCHAR(20),
PROGRAM_NAME VARCHAR(255),
RECEIVE VARCHAR(255),
SEND VARCHAR(255),
elig_type varchar(20),
PROGRAM_ID BIGINT
);

我在一个存储过程里面有这样一个子临时表,往里面放了很多东东,现在要子查询出来,如何实现

我想执行这样一条SQL:
SELECT * FROM TEMP_RESULT WHERE COUNT_USER NOT IN (SELECT COUNT_USER FROM

TEMP_RESULT WHERE elig_type='exclude') 但是这样的话回提示,temp_rsult can not reopen
[b]问题补充:[/b]
DROP TABLE IF EXISTS TEMP_RESULT_Copy ;
CREATE TEMPORARY TABLE TEMP_RESULT (
#CREATE TABLE PROSPERITI.TEMP_RESULT(
COUNT_USER BIGINT,
STATUS_USER VARCHAR(20),
PROGRAM_NAME VARCHAR(255),
RECEIVE VARCHAR(255),
SEND VARCHAR(255),
elig_type varchar(20),
PROGRAM_ID BIGINT
);

我在一个存储过程里面有这样一个子临时表,往里面放了很多东东,现在要子查询出来,如何实现
问题补充:
DROP TABLE IF EXISTS TEMP_RESULT_Copy ;
CREATE TEMPORARY TABLE TEMP_RESULT (
#CREATE TABLE PROSPERITI.TEMP_RESULT(
COUNT_USER BIGINT,
STATUS_USER VARCHAR(20),
PROGRAM_NAME VARCHAR(255),
RECEIVE VARCHAR(255),
SEND VARCHAR(255),
elig_type varchar(20),
PROGRAM_ID BIGINT
);

我在一个存储过程里面有这样一个子临时表,往里面放了很多东东,现在要子查询出来,如何实现

我想执行这样一条SQL:
SELECT * FROM TEMP_RESULT tr_01 WHERE tr_01.COUNT_USER NOT IN (SELECT COUNT_USER FROM

TEMP_RESULT tr_02 WHERE tr_02.elig_type='exclude') 但是这样的话回提示,tr_01 can not reopen

  • 写回答

6条回答 默认 最新

  • iteye_14081 2008-11-17 13:27
    关注

    根据mysql 5.0文档

    A.7.3. TEMPORARY TABLE Problems
    The following list indicates limitations on the use of TEMPORARY tables:

    A TEMPORARY table can only be of type HEAP, ISAM, MyISAM, MERGE, or InnoDB.

    You cannot refer to a TEMPORARY table more than once in the same query. For example, the following does not work:

    mysql> SELECT * FROM temp_table, temp_table AS t2;
    ERROR 1137: Can't reopen table: 'temp_table'

    你这个操作是不可以,而且临时表没有索引,速度也会慢,建议你将这个临时表改为一个真实表,用来存放中间结果。也就是在数据库上真实建立一个temp_xxxx_xxx的表。如果需要临时表的隔离机制,建议你create临时表时就分为两个,创建两个临时表,一个放所有数据,另一个放exclude的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突