0

在一组准备好的语句中,我想将在一个准备好的语句中找到的键传递到后面的准备好的语句中。

我可以这样做:

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 子句中的表是临时的。

4

1 回答 1

1

也许我遗漏了一些东西,但是对于这种特殊情况,您甚至需要临时表吗?像这样的东西会起作用吗?

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

这是SQL 小提琴

于 2013-01-14T20:21:35.497 回答