所以我有一个我想运行的查询,它并不复杂,但MySQL不想让我的生活变得轻松,一直给出error 1064.以下是查询的整体 struct :

IF EXISTS(query) AND IF NOT EXISTS(query)
BEGIN
    INSERT ...
    DELETE ...
END

现在我已经使用了这个整体 struct ,但我不认为MySQL支持这种 struct ,因为我得到了error 1064.因此,我一直在使用以下查询:

SELECT IF(
    EXISTS(query) AND NOT EXISTS(query), 1, 0
);

此操作运行良好,并返回正确的布尔值.

My question is现在如何使用返回的布尔值,并在上面给出的整体 struct 中执行insertdelete操作?也许我还没有找到更好的方法来完成这项工作.

谢谢!

推荐答案

MySQL的IF语法需要THENEND IF.你两个都没有.您需要仔细研究语法参考和示例:https://dev.mysql.com/doc/refman/en/if.html

此外,MySQL目前不允许IF/THEN/END IF超出存储 routine .https://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html表示:

本节介绍Begin...的语法.End复合语句和可在存储程序体中使用的其他语句:存储过程和函数、触发器和事件.

如果需要条件逻辑,则需要在客户端应用程序中编写代码.

Mysql相关问答推荐

如何在使用VALUES()插入时指定jOOQ中的行别名

MySQL RDS ALTER TABLE ENUM短暂中断了我的数据库连接

在 MYSQL 8 中的 JSON 字段上的 SELECT 中返回所有键及其数组项

SQL - 基本的内部连接查询

状态为已发货的订单返回产品总数量的SQL(不同的两张表)

MySQL Procedure 变量在 count(*) 上接收 null

多个 FULLTEXT 索引上的 MySQL SELECT.结果极其缓慢

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

如何创建一个判断行是否存在的mysql查询-如果存在我想插入一条新记录,否则增加一个值

总行大小不超过 65535,但我得到行大小太大.所用表类型的最大行大小,不包括 BLOB,是 65535错误

Select 在同一天售出不同活动门票的收银员

使用 MySQL 在树中查找 Leaf

当您无法修复表时,如何修复 MySQL不正确的密钥文件错误?

Python MYSQL 更新语句

org.hibernate.InstantiationException:没有实体的默认构造函数::principal.Cliente

字符ي和ی以及波斯语的区别 - Mysql

PDO:MySQL 服务器已消失

MySQL 中的 VARCHAR(255) 和 TINYTEXT 字符串类型有什么区别?

MySQL 更新连接表

在 MySQL 中仅 Select 仅包含字母数字字符的行