如何在MySQL中使用SELECT IF返回的布尔值



所以我有一个查询,我想运行这不是很复杂,但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值返回,并做insertdelete操作,我有在我上面给出的整体结构?也许还有更好的方法来完成这项工作。

谢谢!

MySQL的IF语法需要一个THENEND 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复合语句和其他可用于存储程序体的语句:存储过程和函数、触发器和事件。

如果你想要条件逻辑,你应该在客户端应用程序中编写代码。

最新更新