2017-05-31 77 views
0

我試圖設置一個If/Then語句來決定什麼插入到我的數據庫中的「course」表中。第一個INSERT INTO限制插入到6行,第二個限制其至7MySQL-IF/THEN語句確定INSERT INTO

下面是代碼的樣子:

If @courseprogram = 'PharmTech' Then 
    INSERT INTO course (fameid, course_id, enroll_status) 
    SELECT @fameid fame_id, course_id, 'S' enroll_status FROM calendar 
    WHERE startdate >= @startdate AND program = @courseprogram ORDER BY startdate LIMIT 6; 
Elseif @fullprogram = 'Medical Assisting' 
    INSERT INTO course (fameid, course_id, enroll_status) 
    SELECT @fameid fame_id, course_id, 'S' enroll_status FROM calendar 
    WHERE startdate >= @startdate AND program = @courseprogram ORDER BY startdate LIMIT 7; 
End if 

當我嘗試運行此,我得到了以下錯誤消息:

錯誤代碼:1064.您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的權利 語法使用近「如果@courseprogram =‘PHARMTECH在行’然後INSERT INTO 課程(fameid,COURSE_ID,ENR」的 手冊1

有誰知道什麼可能是這裏的問題嗎?

此外,我已經讀了一些圍繞這個問題的帖子,IF/THEN語句應該避免在MySQL所有在一起。任何人都可以解釋爲什麼這是和其他方法問題是什麼?

+0

'IF'語句是一個控制流構造,只允許在編程塊 - 存儲過程,觸發器和函數中使用。 –

回答

1

嗯......這將是一種在單一統計中做到這一點的方法EMENT:

INSERT INTO course (fameid, course_id, enroll_status) 
    (SELECT @fameid as fame_id, course_id, 'S' as enroll_status 
    FROM calendar 
    WHERE @courseprogram = 'PharmTech' AND 
      startdate >= @startdate AND 
      program = @courseprogram 
    ORDER BY startdate 
    LIMIT 6 
    ) UNION ALL 
    (SELECT @fameid as fame_id, course_id, 'S' as enroll_status 
    FROM calendar 
    WHERE @fullprogram = 'Medical Assisting' AND 
      startdate >= @startdate AND 
      program = @courseprogram 
    ORDER BY startdate 
    LIMIT 7 
    ); 

我並不認爲這是優雅。只是它解決了你的問題。

注意:我猜測第二個子查詢中的條件@fullprogram = 'Medical Assisting'應該確實是@courseprogram = 'Medical Assisting'