簡體   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