我有这个:
UPDATE recibo SET liquidado = 1
WHERE clave_recibo = (
SELECT clave_recibo FROM recibo
WHERE paciente_clave_paciente = (
SELECT clave_paciente FROM paciente
WHERE nombre_paciente = 'foo' AND
apellido_paterno_paciente = 'foo' AND
apellido_materno_paciente = 'foo')
AND fecha_recibo = (
SELECT fecha_recibo FROM recibo
WHERE paciente_clave_paciente = (
SELECT clave_paciente FROM paciente
WHERE nombre_paciente = 'foo' AND
apellido_paterno_paciente = 'foo' AND
apellido_materno_paciente = 'foo')
ORDER BY fecha_recibo DESC LIMIT 1)
);
我收到以下错误:
错误代码:1093。您无法在FROM子句中为更新指定目标表'recibo'
我已经读过你不能修改你在FROM子句中使用的同一个表 有没有其他方法可以做到这一点?
答案 0 :(得分:1)
更新recibo
LEFT JOIN recibo
r ON recibo
。id = r。id
SET ... WHERE ...
答案 1 :(得分:0)
您可以从内部选择中创建temporary table,然后按
进行更新其中clave_recibo =(从temptbl中选择clave_recibo)
或join。
您也应该lock表进行写入,因为有人可能会在创建临时表和更新查询后插入/更新某些内容。
然后解锁并删除临时表。