当使用ON DUPLICATE KEY UPDATE执行INSERT语句时,是否有方法在插入语句的VALUES部分引用行和字段的当前值(如果存在)?我不想在ON DUPLICATE KEY UPDATE部分引用它。
在我的用例中,所有行都将始终存在。
像这样的东西
INSERT INTO myTable (Col1, Col2) VALUES
('value', myTable.Col2),
('value2', myTable.Col2)
ON DUPLICATE KEY UPDATE
…
我尝试了这个方法,它将测试中的所有列都设置为空,可能是因为引用失败,它返回了空值。
我尝试在INSERT,ON DUPLICATE KEY UPDATE查询中添加一个IF函数,并使用预先准备好的占位符,这样做可能是恰当的。因此,最终版本将是这样的:
INSERT INTO myTable (Col1, Col2) VALUES
('value', IF(?='test', myTable.Col2, ?),
('value2', myTable.Col2)
ON DUPLICATE KEY UPDATE
…
1条答案
按热度按时间wqsoz72f1#
不能在INSERT语句的VALUES子句中引用行的当前值。必须在ON DUPLICATE UPDATE子句中引用行的当前值。
例如,如果您的输入