我知道我可以做类似的事情
ON DUPLICATE KEY UPDATE
exampleColumn1 = IF (exampleCondition = 1, VALUES(exampleColumn1), exampleColumn1),
exampleColumn2 = IF (exampleCondition = 1, VALUES(exampleColumn2), exampleColumn2),
exampleColumn3 = IF (exampleCondition = 1, VALUES(exampleColumn3), exampleColumn3),
# Etc etc
但是,由于我每次都执行完全相同的条件检查,因此肯定有一种更简洁的方式来编写此代码吗?在条件写得更长一些的情况下,这将特别好。
从我阅读的内容来看,如果我为此编写了一个函数,这似乎是可能的,但是我可以在普通的旧查询中做到吗?
简而言之:不。该on duplicate key
语法不支持任何形式的过滤(where
条件或类似条件)。
但是,如果条件很长,那么一个窍门是利用用户变量来保存其返回值,您可以在以下分配中重复使用该变量:
on duplicate key update
exampleColumn1 = if(@do_update := (exampleCondition = 1), values(exampleColumn1), exampleColumn1),
exampleColumn2 = if(@do_update, values(exampleColumn2), exampleColumn2),
exampleColumn3 = if(@do_update, values(exampleColumn3), exampleColumn3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句