2013-01-14 54 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個字符被拒絕,您甚至無法修復小的語法錯誤! –