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