Mysql 选择“如果”并更新问题

Mysql 选择“如果”并更新问题,mysql,sql,insert-update,Mysql,Sql,Insert Update,我使用此sql对重复密钥进行更新 IF (SELECT COUNT(*) FROM `mlm_settings` WHERE `key` = 'notify_type' AND `user_id`=7 >0 ) UPDATE mlm_settings SET value='2' WHERE user_id = 7 ELSE BEGIN INSERT INTO `mlm_settings` (`key`, `value`,`user_id`) VALUES ('notify_type'

我使用此sql对重复密钥进行更新

IF (SELECT COUNT(*) FROM `mlm_settings` WHERE `key` = 'notify_type' AND `user_id`=7 >0 )
  UPDATE mlm_settings SET value='2' WHERE user_id = 7
ELSE
BEGIN
 INSERT INTO `mlm_settings` (`key`, `value`,`user_id`) VALUES ('notify_type', '2',7)
END
我在mysql中得到一个sql错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'IF (SELECT COUNT(*) FROM 
`mlm_settings` WHERE `key` = 'notify_type' AND `user_id' at line 1
我无法找出错误的原因,因为表的名称是有效的,值是相同的数据类型


可能是什么错误?

您只能在存储过程中使用
IF
语句,而不能在正常查询中使用

如果表中的
(键,用户id)
上有唯一索引,则可以使用:

INSERT INTO mlm_settings (`key`, value, user_id) VALUES ('notify_type', '2', 7)
ON DUPLICATE KEY UPDATE value = '2';

如果控制块不能在功能之外使用。试试这个:-

SELECT IF( EXISTS(
             SELECT COUNT(*) FROM `mlm_settings` WHERE `key` = 'notify_type' AND `user_id`=7 >0), 1, 0)

如果我已经找到一个条目,它给了我1,我如何与上面我写的sql合并它的简单声明变量检查如果变量值是1,那么更新它,否则插入它。我的答案也在更新!!这是在使用普通查询还是在存储过程中?我为
(key,user_id)
创建了一个唯一的索引,正如您提到并使用了您的解决方案一样,我如何将其用于多个插入,例如
插入表(c1)值('1')、('2')等