使用子查询更新列

时间:2015-11-06 00:35:36

标签: sql

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的情况下完成这项工作吗?

2 个答案:

答案 0 :(得分:0)

无论数据库如何,上下文都需要标量子查询。这意味着避免使用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语法(总是使用显式连接)和相关子句,因此它引用了外部查询。

答案 1 :(得分:0)

%