繁体   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