Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-IF/THEN语句确定插入到_Mysql_If Statement - Fatal编程技术网

MySQL-IF/THEN语句确定插入到

MySQL-IF/THEN语句确定插入到,mysql,if-statement,Mysql,If Statement,我正在尝试设置一个If/Then语句,该语句确定在数据库的“course”表中插入的内容。第一次插入将插入限制为6行,第二次将插入限制为7行 下面是代码的样子: If @courseprogram = 'PharmTech' Then INSERT INTO course (fameid, course_id, enroll_status) SELECT @fameid fame_id, course_id, 'S' enroll_status FROM calendar

我正在尝试设置一个If/Then语句,该语句确定在数据库的“course”表中插入的内容。第一次插入将插入限制为6行,第二次将插入限制为7行

下面是代码的样子:

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服务器版本相对应的手册 使用接近'If@courseprogram='PharmTech'的语法,然后插入到 课程(fameid、课程id、第1行的enr

有人知道这里可能有什么问题吗


另外,我在几篇关于这个问题的帖子中读到,在MySQL中应该避免使用IF/THEN语句。有人能解释一下为什么会出现这种情况,以及如何解决这个问题吗?

Hmmm…这将是在一条语句中实现这一点的一种方法:

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'
IF
语句是一个控制流构造,它只允许在编程块中使用——存储过程、触发器和函数。