MySQL - 在存储过程中使用SELECT作为IF语句条件

时间:2018-03-05 13:08:00

标签: mysql sql

如果在表my_table中,value列中只有一行值为column_name,我想在存储过程中执行一组语句。我尝试了以下内容,但是出现语法错误:

IF ((SELECT COUNT(*) FROM my_table WHERE column_name = value) = 1) THEN
    BEGIN
    END;
END IF;

对于上下文:在我的过程中,我在某个时刻创建了一个临时表,在那里我存储了一个值列表。然后在程序中,我想检查该临时表中是否存在给定值。

2 个答案:

答案 0 :(得分:2)

我认为你可能会更好地构建它

BEGIN
DECLARE myCOUNT INTEGER;

SELECT COUNT(*) 
INTO myCount
FROM my_table
WHERE column_name=value; 

IF (myCount = 1) THEN
 -- do stuff
END IF;

END;

答案 1 :(得分:0)

我不确定你要做的是什么,但是我猜错了" upsert" - 更新记录(如果存在),否则插入新记录。

在任何情况下,如果您要确保name中的my_table是唯一的,那么这根本不是正确的方法。相反,声明一个唯一的索引/约束,以便数据库确保数据完整性:

create unique index unq_my_table_name on my_table(name);

然后,您可以使用insert . . . on duplicate key update修改数据库中的记录。