所以我有一个查询,我想运行这不是很复杂,但MySQL不想让我的生活容易,并不断给error 1064
。以下是查询的总体结构:
IF EXISTS(query) AND IF NOT EXISTS(query)
BEGIN
INSERT ...
DELETE ...
END
现在我已经使用了这个整体结构,但我认为MySQL不支持这个,因为我得到error 1064
。因此,我一直在使用以下查询:
SELECT IF(
EXISTS(query) AND NOT EXISTS(query), 1, 0
);
这很好地工作并返回正确的bool值。
我的问题是我现在如何使用这个bool值返回,并做insert
和delete
操作,我有在我上面给出的整体结构?也许还有更好的方法来完成这项工作。
谢谢!
MySQL的IF
语法需要一个THEN
和END IF
。你两者都没有。您需要仔细研究语法参考和示例:https://dev.mysql.com/doc/refman/en/if.html
另外,MySQL目前不允许IF/THEN/END IF
在存储例程之外。https://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html表示:
本节描述BEGIN…END复合语句和其他可用于存储程序体的语句:存储过程和函数、触发器和事件。
如果你想要条件逻辑,你应该在客户端应用程序中编写代码。