繁体   English   中英

非常基本的 IF EXISTS 语句不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM