sql server 中同时更新带有子查询多个元组的问题
想要更新订单里面的总金(dd.dprice),要用的订单明细里面书本的数量(orderdetail.number)和图书信息里面的单价(book.price)update...
想要更新订单里面的总金(dd.dprice),要用的订单明细里面书本的数量(orderdetail.number)和图书信息里面的单价(book.price)
update dd
set dprice=(select sum(book.price*orderdetail.number) from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
group by dd.ddno)
from orderdetail,book
where orderdetail.bookno=book.bookno
------------------------------
上面那个方法报错说
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
==========================
update dd
set dprice= sum(book.price*orderdetail.number)
from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
--------------------------
这个方法说
聚合不应出现在 UPDATE 语句的集合列表中。
=====================================
到底应该怎样更新更新值不同的多个元组啊~~~~~~~~~~~~~~~· 展开
update dd
set dprice=(select sum(book.price*orderdetail.number) from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
group by dd.ddno)
from orderdetail,book
where orderdetail.bookno=book.bookno
------------------------------
上面那个方法报错说
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
==========================
update dd
set dprice= sum(book.price*orderdetail.number)
from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
--------------------------
这个方法说
聚合不应出现在 UPDATE 语句的集合列表中。
=====================================
到底应该怎样更新更新值不同的多个元组啊~~~~~~~~~~~~~~~· 展开
展开全部
上面报错:返回值不止一个,很明了,子查询结果返回多个字段,而你只使用一个字段接受(即使用“=”:表示单个字段),将“=”改为IN就OK了
update dd
set dprice IN (select sum(book.price*orderdetail.number) from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
group by dd.ddno)
from orderdetail,book
where orderdetail.bookno=book.bookno
————————————————————————————————————
update dd
set dprice IN (select sum(book.price*orderdetail.number) from orderdetail,book,dd
where book.bookno=orderdetail.bookno and dd.ddno=orderdetail.ddno
group by dd.ddno)
from orderdetail,book
where orderdetail.bookno=book.bookno
————————————————————————————————————
更多追问追答
追问
还是不行。。今天上课问了老师,才知道原来要内外层连接才可以昂~我已经知道正确答案了,但是没人回答对,这该怎么办><
追答
哦,知道了还需要问什么,你在哪里读什么的?、、
展开全部
update dd a set a.dprice= b. XX
inner join (select .....) b on a.x = b.x --加条件
inner join (select .....) b on a.x = b.x --加条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
时间戳不能插入,只能由系统分配,涉及到插入数据包含时间戳字段时,需指定列名,如:
insert
into
表名(字段1,字段2,字段3……)
values(字段1的值,字段2的值,字段3的值……)
注:列名要对应
insert
into
表名(字段1,字段2,字段3……)
values(字段1的值,字段2的值,字段3的值……)
注:列名要对应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问这个问题是怎么解决的?我现在也遇到这个问题了、、、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询