通过以下查询,我只想在ConcurrentJobs
列中的值是MaxConcurrentJobs
要更新的greater than or equal to
值时更新ConcurrentJobs
列。
insert into userjobinfo (UserId,ConcurrentJobs) values (335,2300)
on duplicate key update ConcurrentJobs = case when values(MaxConcurrentJobs) >= ConcurrentJobs
then ConcurrentJobs else values(ConcurrentJobs) end;
但是上述查询无法按预期方式工作。即使条件失败,它也会始终更新
2300
列中的值concurrent jobs
。这可能是什么原因?查询在哪里失败? 最佳答案
ON DUPLICATE KEY UPDATE子句中的..VALUES(col_name)引用
将要插入的col_name的值,没有重复键
发生冲突。 VALUES()函数仅在INSERT中才有意义
... UPDATE语句,否则返回NULL
http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
由于values(MaxConcurrentJobs)
引用的是列,因此您不插入它为NULL,因此您的条件始终默认为values(ConcurrentJobs)
。为此逻辑使用触发器。