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语句中使用的子查询返回了多行,这就是我无法工作的原因。有人可以帮我解决这个问题。
答案 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的答案。