繁体   English   中英

使用另一个表更新表

[英]update table using another table

我必须将客户列的total_orders更新为等于客户放置的所有订单的总数(在cust_order中) 在此输入图像描述

这是我尝试过的

update (select * 
        from atish_customer a 
        inner join 
        (
            select cust_nbr,count(cust_nbr) as count_orders
            from atish_cust_order 
            group by cust_nbr
        )c
        on c.cust_nbr=a.cust_nbr) 
set tot_orders=count_orders;

但这是我得到的错误

ORA-01779: cannot modify a column which maps to a non key-preserved table

这个怎么样:

UPDATE customer SET total_orders = (
    SELECT COUNT(*) FROM cust_order 
    WHERE cust_order.cust_nbr = customer.cust_nbr
) 

[我不确定你的atish_customeratish_customer_order在哪里发挥作用......它们没有显示在你的图表中]

说明:内部select基本上只计算每个cust_nbr的cust_order表中的订单数。 通过将外部customer.cust_nbr连接到内部cust_order.cust_nbr ,每个[外部]行将使用正确的总数进行更新。 这称为相关子查询(有关简短教程,请参见此处 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM