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