临时mysql表的范围或指定表是临时的

时间:2013-01-14 19:47:49

标签: mysql sql

在一组准备好的语句中,我想将一个预准备语句中的键传递给后来准备好的语句。

我可以这样做:

PREPARE get_Class_Session FROM
    "CREATE TABLE time_Table_Keys 
             (SELECT time_Table_Key,
                           date,
                           DATE_FORMAT(date, '%W') AS day,
                           slot,
                           class_Session 
                FROM `Time_Table` 
             WHERE (((date >=? && date <= ?) && DAYOFWEEK(date)=? && (slot >=? && slot <=?)) && class_Session ='0')
            )";

其次是:

PREPARE update_Time_Table FROM
    "UPDATE Time_Table SET class_Session='8888'
      WHERE time_Table_Key IN ( SELECT time_Table_Key FROM time_Table_Keys)";

最后:

PREPARE drop_Tmp_Table FROM
    "DROP TABLE time_Table_Keys";

然而:

我真的想使用CREATE TEMPORARY TABLEDROP TEMPORARY TABLE但是当我尝试这样做时,IN子句找不到临时表,因为当解析准备时它当然不存在。

是否有某种方法可以指定临时文件的范围,或者是否有人告诉准备IN子句中的表是临时的。

1 个答案:

答案 0 :(得分:1)

也许我错过了什么,但你甚至需要这个特殊情况的临时表吗?这样的事情会起作用吗?

UPDATE Time_Table 
SET class_Session='8888'
WHERE 
(
  (
     (date >=? && date <= ?) && 
     DAYOFWEEK(date)=? && 
     (slot >=? && slot <=?)
  ) 
  && class_Session ='0'
)

这是SQL Fiddle