簡體   English   中英

使用子查詢更新列

[英]Update column with a subquery

ALTER TABLE order_t ADD Totalfixed DECIMAL(7,2);

UPDATE Order_t 
    SET Totalfixed = (
        SELECT orderid, SUM(price * quantity) AS tf 
        FROM
            orderline ol,
            product p
        WHERE
            ol.productid = p.productid 
            AND ol.orderid = orderid
        GROUP BY orderid
    );

一切都可以單獨工作,但我得到:

操作數應包含1列

而且,如果我從子查詢中刪除了orderid ,則會得到:

子查詢返回1行以上

無論如何,有沒有join就可以使這項工作嗎?

無論數據庫如何,上下文都需要標量子查詢。 這意味着避免group by並且僅返回一列:

UPDATE Order_t 
    SET Totalfixed = (
        SELECT SUM(price * quantity) AS tf 
        FROM orderline ol JOIN
             product p
             ON ol.productid = p.productid  
        WHERE ol.orderid = Order_t.orderid
     );

我還修復了JOIN語法( 始終使用顯式聯接)和相關子句,因此它引用了外部查詢。

UPDATE A 
SET Totalfixed = SUM(price * quantity)
FROM Order_t A 
INNER JOIN orderline ol  ON ol.orderid = A.orderid 
INNER JOIN product p  ON ol.productid = p.productid  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM