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 - You can't specify target table 'asce' for update in FROM 子句)。我在 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 回答