insert into epc_vin_sence(vin,vehicleDesc,engineNumber) SELECT vin,LEFT(vehicleDesc,instr(vehicleDesc,"[发动机号:")-1),'' engineNumber from epc_vin_sence WHERE brandName = '解放' and (LENGTH(engineNumber) < 6 or engineNumber REGEXP '[^\uFF00-\uFFFF\u0000-\u00FF]') and instr(vehicleDesc,'[发动机号:') <> 0 on duplicate key update vehicleDesc=VALUES(vehicleDesc),engineNumber=VALUES(engineNumber) > 1815 - [40040, 2023052616243817201624009803151988963] Query execution error: : [ON DUPLICATE KEY UPDATE] value '`qpyun`.`values`(`vehicleDesc`)' is not supported.
时间: 2024-02-11 10:05:07 浏览: 294
这个错误提示是因为 ON DUPLICATE KEY UPDATE 语句中的 VALUES() 函数不被支持。在 MySQL 中,VALUES() 函数用于获取指定列在插入时的值,但在 ON DUPLICATE KEY UPDATE 语句中,它不能被用作更新的值。
解决方法通常是将更新的值直接指定为一个表达式,如下:
```mysql
insert into epc_vin_sence(vin,vehicleDesc,engineNumber)
SELECT vin,LEFT(vehicleDesc,instr(vehicleDesc,"[发动机号:")-1),'' AS engineNumber
FROM epc_vin_sence
WHERE brandName = '解放'
and (LENGTH(engineNumber) < 6 or engineNumber REGEXP '[^\uFF00-\uFFFF\u0000-\u00FF]')
and instr(vehicleDesc,'[发动机号:') <> 0
ON DUPLICATE KEY UPDATE
vehicleDesc=VALUES(vehicleDesc),
engineNumber = IF(LENGTH(engineNumber) < 6 or engineNumber REGEXP '[^\uFF00-\uFFFF\u0000-\u00FF]', '', engineNumber);
```
这里将 engineNumber 的更新值直接使用了一个 IF 表达式,如果满足条件,则更新为 '',否则更新为当前值。
阅读全文