如果条件MySQL不工作

时间:2016-04-05 17:42:08

标签: mysql sql if-statement

我正在尝试对MySQL执行查询,但它一直告诉我我使用了错误的语法,我尝试搜索MySQL社区,但我没有得到任何有用的东西..我在谷歌上找到的大部分答案都是针对其他人的数据库,但他们为" MySQL"标记它们,但它仍然失败。

这是我试图执行的声明:

        $statement = "IF (SELECT ttb_id FROM timetable WHERE ttb_week = $i AND ttb_time = $j) THEN
                        BEGIN
                          UPDATE types SET typ_name = '$subj'
                          WHERE typ_name = 'student';
                        END;
                      ELSE
                        BEGIN
                          INSERT INTO types VALUES (null,`Yo`);
                        END;
                    ";

错误:

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT ttb_id FROM timetable WHERE ttb_week = 0 AND ttb_time = 0) THEN ' at line 1

我正在使用:

  • PHP脚本语言版本5.2.6
  • MySQL数据库版本5.0.51b

我一直在环顾四周但无济于事,MySQL开发网站上的if条件根本没有帮助..

我是新手,这让我很生气!我尝试过的所有不同的查询都失败了......它永远不是正确的语法。

我在stackExchange和其他网站上找到了很多问题的答案,但它总是错的..我也记得这个结构来自VB.net课程,所以也许这是针对MSSQL的?那么MySQL呢?到目前为止,每个人都列出了类似的结构,并表示它适用于MySQL,我从这个社区的答案中得到了答案*标记为MySQL,他声称它有效。这是我尝试的众多之一。

我真的很感谢你的帮助

*:Usage of MySQL's "IF EXISTS"

1 个答案:

答案 0 :(得分:0)

我的第一个想法是你没有将SELECT返回与实际利用条件逻辑的任何东西进行比较。您只是想查看您的查询是否返回值?如果它没有返回值,那么您插入一条新记录,否则您将更新。

也许使用IS NOT NULL或检查来查看select上的计数以查看有多少行并进行比较以查看是否大于0。

IF (SELECT ttb_id FROM timetable WHERE ttb_week = $i AND ttb_time = $j IS NOT NULL) THEN

IF (SELECT COUNT(*) FROM timetable WHERE ttb_week = $i AND ttb_time = $j) > 0 THEN