簡體   English   中英

MySQL-在存儲過程中將SELECT用於IF語句條件

[英]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”-更新一條記錄(如果存在),否則插入一條新記錄。

無論如何,如果您試圖確保namemy_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM