[英]MySQL - Using SELECT for IF statement condition in stored procedure
我想在存儲過程中執行一組特定的語句,如果在表my_table
中恰好有一行具有column_name
列中的value value
的行。 我已經嘗試了以下方法,但是出現語法錯誤:
IF ((SELECT COUNT(*) FROM my_table WHERE column_name = value) = 1) THEN
BEGIN
END;
END IF;
對於上下文:在我的過程中,我有時會創建一個臨時表,用於存儲值列表。 然后,在該過程的后面,我想檢查該臨時表中是否存在給定值。
我認為您最好像這樣構造它
BEGIN
DECLARE myCOUNT INTEGER;
SELECT COUNT(*)
INTO myCount
FROM my_table
WHERE column_name=value;
IF (myCount = 1) THEN
-- do stuff
END IF;
END;
我不確定您要做什么,但是我猜是“ upsert”-更新一條記錄(如果存在),否則插入一條新記錄。
無論如何,如果您試圖確保name
在my_table
是唯一的,那么這根本不是正確的方法。 而是聲明一個唯一的索引/約束,以便數據庫確保數據完整性:
create unique index unq_my_table_name on my_table(name);
然后,您可以使用insert . . . on duplicate key update
insert . . . on duplicate key update
insert . . . on duplicate key update
以修改數據庫中的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.