【问题标题】:Error : <table_name> specified twice, both as a target for 'UPDATE' and as a separate source for data错误:<table_name> 指定了两次,既作为“更新”的目标,又作为数据的单独源
【发布时间】:2017-04-06 10:36:03
【问题描述】:

我想更新 tot_sales 属性 tot_sales 与销售员处理的所有订单的 order_price 的总和

我写了这个更新查询。但它给出了错误

#1093 - 表 'salesman' 被指定了两次,作为 'UPDATE' 的目标和 >作为数据的单独源

UPDATE salesman
SET salesman.tot_sales = (SELECT SUM(orders.order_price)
                          FROM orders
                          INNER JOIN salesman ON orders.emp_id = salesman.emp_id
                          GROUP BY salesman.emp_id
                          )

【问题讨论】:

    标签: mysql sql xampp erd


    【解决方案1】:

    使用您的方法,使用相关子查询而不是聚合

    UPDATE salesman s
        SET s.tot_sales = (SELECT SUM(o.order_price)
                           FROM orders o
                           WHERE o.emp_id = s.emp_id
                          );
    

    这通常写成:

    UPDATE salesman s LEFT JOIN
           (SELECT o.emp_id, SUM(o.order_price) as total_price
            FROM orders o
            GROUP BY o.emp_id
           ) o
           ON o.emp_id = s.emp_id
        SET s.tot_sales = o.total_price;
    

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多