在mysql 8.0中,当VALUES()用于类似下面的查询时,会给出一个不赞成使用的通知
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
这篇文章展示了如果您更新的是单行,而不是多行的解决方案,如何修复它,这就是我们使用VALUES()的原因。
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
至
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
这对于单次插入查询是可以的,但我不知道如何将其扩展为多次插入
INSERT INTO foo (bar, baz)
VALUES (1,2) AS new_foo1,
VALUES (3,4) AS new_foo2,
VALUES (5,6) AS new_foo3
ON DUPLICATE KEY UPDATE baz=new_foo.baz #what to do here??
当插入multiplerows时,这看起来太多了,而不是替换VALUES()的易用性。有人能告诉我在这种查询中修复VALUES()的反对意见的正确方法吗?
1条答案
按热度按时间gupuwyp21#
这在手册里有,你写
values
* 一次 *,然后是所有的元组,然后是as
,后面是别名。https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
这将创建一个别名来连续引用每一行。类似于JOIN语法中的相关名。