2017-05-31 78 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'