简单的SQL查询,但不知道如何解决它

时间:2014-08-19 19:00:19

标签: sql db2

大家我有两张不同的桌子:

  

PS(大小(主键),价格)销售额(....大小,数量,total_Price)

我试图执行此声明:

 update Sales
                set total_Price = (select price from PS, Sales 
where Sales.size = PS.size )*Quantity;

但我总是得到这个错误

  

SQL0811N标量全选,SELECT INTO语句或结果   VALUES INTO语句不止一行。

我知道错误是因为我在select语句中使用的子查询返回了多行,这就是我无法工作的原因。有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

为什么要加入另一张销售表?我的猜测是:

update Sales s
    set total_Price = (select ps.price * s.Quantity
                       from PS 
                       where s.size = PS.size);

会做你想要的。由于ps.size是唯一的,因此您不应该获得SQL0811N

答案 1 :(得分:-1)

对于初学者,你可以:

UPDATE sales SET total_Price = PS.price * Quantity
from PS, Sales where Sales.size = PS.size

可能不是一个好主意 - 如果有多个匹配值,它会挑选一个任意的赢家(Lennart的答案会引发错误,这实际上可能是最好的)。如果大小是1比1,那么这相当于Lennart的答案。