2013-12-08 100 views
0

我有一個簡單的MySQL更新語句。當我單獨運行它時,它工作正常。MySQL更新聲明在存儲過程中不起作用

UPDATE 
temp_student 
INNER JOIN student 
ON temp_student.card = student.card 
SET studentid = student.id; 

但是,當我把它放在一個存儲過程中,表中沒有行被更新。任何人都可以提供線索?謝謝。

DELIMITER $$ 

USE `eceintern2`$$ 

DROP PROCEDURE IF EXISTS `copy_from_temp_student`$$ 

CREATE DEFINER = `root` @`localhost` PROCEDURE `copy_from_temp_student`() 
BEGIN 
    UPDATE 
    temp_student 
    INNER JOIN student 
     ON temp_student.card = student.card 
     SET studentid = student.id; 
END $$ 

DELIMITER ; 
+0

我不知道如果是這樣的原因,但在單機版本,使用的是'INNER JOIN',而不是'LEFT JOIN'。 – GolezTrol

+0

我試過INNER JOIN和LEFT JOIN。沒有幫助。對不起,我忘了把它改回來。 – Qinjie

回答

0

該語法似乎沒有問題。

DELIMITER $$ 

CREATE PROCEDURE `copy_from_temp_student`() 
BEGIN 
    UPDATE `temp_student` 
     INNER JOIN `student` ON `temp_student`.`card` = `student`.`card` 
    SET `temp_student`.`studentid` = `student`.`id`; 
END */$$ 

DELIMITER ; 

SQL Fiddle demo