2013-06-12 17 views
0

我有這樣的:MySQL的 - 如何更新您在SELECT語句中使用相同的表

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子句中使用的同一個表 有沒有其他方法可以做到這一點? 謝謝!

回答

1

不知道,如果它的工作原理...加入表,然後WIRTE您的where語句

UPDATE recibo LEFT JOIN recibo R ON recibo .ID = R。 id SET ... WHERE ...

0

您可以從內部選擇一個temporary table,然後做更新爲

其中clave_recibo =(選擇temptbl clave_recibo)

join

您應該也可能lock寫入表,因爲有人可能會在臨時表創建和更新查詢後插入/更新某些內容。

然後解鎖並放下臨時表。

相關問題