[英]Very basic IF EXISTS statement not working
我真的不明白为什么我的声明:
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 只允许编程块中的IF
语句——存储函数、过程和触发器。
相反,只需使用:
select p.*
from people p
where exists (select 1 from people p2 where p2.id = 168);
如果id
168 在表中,这将返回所有人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.