2013-01-14 55 views
0

在一组准备好的语句中,我希望将在一个准备好的语句中找到的键传递到稍后准备好的语句中。临时mysql表的范围或指定表是临时的

我可以利用这样做:

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

也许我错过了一些东西,但是你甚至需要这个特殊情况下的临时表吗?会有这样的工作吗?

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

这里是SQL Fiddle

+0

好的完全接受你在那里说的话。但这只是一个实例,我仍然想知道如何在预先准备的语句中使用临时表。 – codepuppy

+0

@wickedrunr - 请不要简单地编辑出“祝你好运”;这些都是次要的修改,并阻止了审查队列的不必要的评论。如果您*实质上*改善了问题或答案,请只编辑。 – LittleBobbyTables

+0

@LittleBobbyTables然后应该有一种方法来标记编辑为“次要”(如在维基百科),因为它是没有意义的,不能改善一个坏的帖子。由于编辑<10个字符被拒绝,您甚至无法修复小的语法错误! –