0

我正在使用此 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

我无法弄清楚错误的原因是什么,因为表的名称是有效的并且值是相同的数据类型

可能是什么错误?

4

2 回答 2

1

您只能IF在存储过程中使用语句,而不能在普通查询中使用。

如果表中有唯一索引(key, user_id),您可以使用:

INSERT INTO mlm_settings (`key`, value, user_id) VALUES ('notify_type', '2', 7)
ON DUPLICATE KEY UPDATE value = '2';
于 2013-09-21T14:51:58.950 回答
1

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

SELECT IF( EXISTS(
             SELECT COUNT(*) FROM `mlm_settings` WHERE `key` = 'notify_type' AND `user_id`=7 >0), 1, 0)
于 2013-09-21T14:52:08.567 回答