在一组准备好的语句中,我想将一个预准备语句中的键传递给后来准备好的语句。
我可以这样做:
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 TABLE
和DROP TEMPORARY TABLE
但是当我尝试这样做时,IN子句找不到临时表,因为当解析准备时它当然不存在。
是否有某种方法可以指定临时文件的范围,或者是否有人告诉准备IN子句中的表是临时的。
答案 0 :(得分:1)
也许我错过了什么,但你甚至需要这个特殊情况的临时表吗?这样的事情会起作用吗?
UPDATE Time_Table
SET class_Session='8888'
WHERE
(
(
(date >=? && date <= ?) &&
DAYOFWEEK(date)=? &&
(slot >=? && slot <=?)
)
&& class_Session ='0'
)
这是SQL Fiddle。