【问题标题】:How to execute update join query?如何执行更新连接查询?
【发布时间】:2015-06-11 06:08:31
【问题描述】:

我们如何在 MySQL 中运行这些类型的查询?

如何执行这些类型的查询我们如何在 MySQL 中运行,即更新连接查询?

UPDATE file_master t1,users t2 SET
    t1.Status = "cancel", 
    t1.is_credit_revers=1, 
    t1.is_credit_reversed=1,
    t1.t_reversal=t1.credit,
    t2.credit=t1.credit+
     (
       select sum(t1.credit) from file_master where FileID in(7,6,5)
     )
WHERE t1.FileID in(7,6,5) 
and t1.CRN=t2.id 
and t1.CRN=1 ;

1093 - 表“t1”被指定了两次,既作为“更新”的目标,又作为数据的单独源

【问题讨论】:

    标签: mysql


    【解决方案1】:

    MySQL 对象更新也在子查询中的表

    您有时可以将子查询隐藏在另一个子查询中以解决此问题。

    因此尝试这样的事情:-

    UPDATE file_master t1
    INNER JOIN users t2 
    ON t1.CRN = t2.id 
    CROSS JOIN
    (
        SELECT credit_sum
        FROM
        (
            SELECT SUM(credit) AS credit_sum 
            FROM file_master 
            WHERE FileID IN(7,6,5)
        ) t3
    ) t4
    SET t1.Status = "cancel", 
    t1.is_credit_revers = 1, 
    t1.is_credit_reversed = 1,
    t1.t_reversal = t1.credit,
    t2.credit = t1.credit + t4.credit_sum
    WHERE t1.FileID in(7,6,5) 
    AND t1.CRN = 1 ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多