0

私はこれを持っています:

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 句で使用するのと同じテーブルを変更できないと読みましたが、これを行う別の方法はありますか?

4

2 に答える 2

0

内部選択から一時テーブルを作成し、次のように更新できます

where clave_recibo = (temptbl から clave_recibo を選択)

またはjoinを使用します。

また、一時テーブルの作成と更新クエリの後に誰かが何かを挿入/更新する可能性があるため、おそらく書き込み用にテーブルをロックする必要があります。

次に、一時テーブルのロックを解除して削除します。

于 2013-06-12T20:18:45.993 に答える