MYSQL,关于重复更新和 IF
MYSQL, ON DUPLICATE UPDATE and IF
我的查询实际上是:
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'on'), (15,20,'on')
ON DUPLICATE KEY UPDATE status='off';
但是如何添加 IF status="on" 然后进行更新?我试过了
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'pending'), (15,20,'on')
ON DUPLICATE KEY UPDATE status='off' IF(status='pending');
但是好像不行,文档里这部分我没看懂。
有什么帮助吗?
谢谢
这是一个很好的文档和示例,演示了相同的 MySQL IF Function。
MySQLIF 函数的语法如下:
IF(表达式, if_true_expr, if_false_expr)
如果 expr
的计算结果为 TRUE
,则 IF 函数 returns if_true_expr
,否则 returns if_false_expr
.
现在,回到你的问题,假设你想用 'on'
或 'off'
或 'pending'
或基于状态的列 status
的用户输入更新状态值为 on ,查询应如下所示:
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'pending'), (15,20,'on')
ON DUPLICATE KEY UPDATE status = IF(VALUES(status) = 'on', VALUES(status), 'off');
我的查询实际上是:
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'on'), (15,20,'on')
ON DUPLICATE KEY UPDATE status='off';
但是如何添加 IF status="on" 然后进行更新?我试过了
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'pending'), (15,20,'on')
ON DUPLICATE KEY UPDATE status='off' IF(status='pending');
但是好像不行,文档里这部分我没看懂。
有什么帮助吗?
谢谢
这是一个很好的文档和示例,演示了相同的 MySQL IF Function。
MySQLIF 函数的语法如下: IF(表达式, if_true_expr, if_false_expr)
如果 expr
的计算结果为 TRUE
,则 IF 函数 returns if_true_expr
,否则 returns if_false_expr
.
现在,回到你的问题,假设你想用 'on'
或 'off'
或 'pending'
或基于状态的列 status
的用户输入更新状态值为 on ,查询应如下所示:
INSERT INTO `table` (f1,f2,status) VALUES
(1,5,'on'), (3,2,'pending'), (15,20,'on')
ON DUPLICATE KEY UPDATE status = IF(VALUES(status) = 'on', VALUES(status), 'off');