我真的不明白为什么我的陈述:
IF EXISTS (SELECT * FROM people WHERE ID = 168)
THEN SELECT * FROM people
END IF;
返回此错误:
Unknown statement type. (near "IF EXISTS" at position 0)
我使用的是 MariaDB 10.3。有什么想法吗?
其他信息
这当然是一个简化的示例。具体来说,我想做的是:
IF EXISTS (SELECT * FROM people WHERE ID = 168)
THEN UPDATE people SET calculated_value = complex_queries_and_calculations
WHERE ID = 168
..,如果给定记录包含给定数据,则更新该记录的字段,否则不执行任何操作。
为了生成用于更新的数据,我需要查询其他表的值并进行一些计算。如果实际上没有什么可更新的,我想避免这些查询+计算。在这种情况下,只需什么都不做。
因此,我猜测将 EXIST
子句放入 UPDATE
语句的 WHERE
子句中会导致许多徒劳的查询和计算.
最佳答案
MySQL 和 MariaDB 只允许在编程 block (存储函数、过程和触发器)中使用 IF
语句。
相反,只需使用:
select p.*
from people p
where exists (select 1 from people p2 where p2.id = 168);
如果表中存在 id
168,则返回所有个人。
关于sql - 非常基本的 IF EXISTS 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64836645/