0

私はこのクエリを実行しようとしています:

        UPDATE  
            arc_salon_credit_exposant AS asce
        SET  
            asce.asce_credit_restant = 
                (
                    SELECT 
                        SUM(asce_credit_restant) 
                    FROM
                        arc_salon_credit_exposant
                    WHERE
                        asce_scre_id = '524' AND
                        asce_sexp_id = '719' AND
                        (asce_fam_id is NULL OR
                            asce_fam_id = '168')
                )
        WHERE  
            asce.asce_scre_id = '524' AND
            asce.asce_sexp_id = '719' AND
            asce.asce_fam_id is NULL

しかし、得られるのは mysql エラーだけです (#1093 - FROM 句での更新にターゲット テーブル 'asce' を指定できません)。ここstackoverflowでいくつかの質問を読みました(そのため、エイリアスを使用してみました)が、機能させることができません。Mysqlが一時テーブルを作成するようにクエリを作成する必要があることはわかっていますが、..これを実行できません。ちょっとここで立ち往生。

テーブルの構造は次のとおりです。

Column name Type    Null    Défaut
asce_id int(11) Non 
asce_scre_id    int(11) Non 
asce_sexp_id    int(11) Non 
asce_credit_restant double  Oui NULL
asce_fam_id int(11) Oui NULL

そして、ここにいくつかのデータがあります:

asce_id asce_scre_id asce_sexp_id asce_credit_restant asce_fam_id

35 524 7885 4900 ヌル

17 524 719 200 ヌル

45 524 719 100 168

44 524 7885 100 168

前もって感謝します

4

1 に答える 1

0

このような結合でテーブル 更新する必要があります

UPDATE  arc_salon_credit_exposant AS asce
JOIN
(     SELECT 
         asce_credit_restant.IDColumn  --<<here your Unique column for self join
         SUM(asce_credit_restant) as tot
      FROM
         arc_salon_credit_exposant
      WHERE
         asce_scre_id = '524' AND
         asce_sexp_id = '719' AND
         asce_fam_id is NULL
) A
ON asce.IDColumn = A.IDColumn
SET asce.asce_credit_restant = A.tot
WHERE  
    asce.asce_scre_id = '524' AND
    asce.asce_sexp_id = '719' AND
    asce.asce_fam_id is NULL

この例のデモを見る

于 2012-12-05T10:57:18.087 に答える