首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用子查询更新多行

问如何使用子查询更新多行
EN

Stack Overflow用户
提问于 2012-10-25 01:49:34
回答 4查看 2K关注 0票数 1

当我执行子查询时,一切正常,现在我正在使用相同的查询来基于子查询结果更新列,但它表示子查询返回了超过1行,这使得我应该解决这个问题,这使得sense..How。

代码语言:javascript
复制
begin transaction
update trn_RatingAuto                                                        
set Rate  = 0 
where rate = (
SELECT ar.Rate
FROM trn_account ta
INNER JOIN trn_risk tr  ON ta.AccountId=tr.AccountId
inner join trn_option ot on tr.riskid = ot.riskid
INNER JOIN trn_Rating ra ON ot.RatingId = ra.RatingId
INNER JOIN trn_RatingAuto ar on ra.RatingId = ar.RatingId
where  ar.Rate is null 
)
EN

回答 4

Stack Overflow用户

发布于 2012-10-25 01:53:05

您需要使用IN而不是=。

代码语言:javascript
复制
update trn_RatingAuto
set Rate  = 0 
where rate IN (
  SELECT ar.Rate
  FROM trn_account ta
  INNER JOIN trn_risk tr  ON ta.AccountId=tr.AccountId
  inner join trn_option ot on tr.riskid = ot.riskid
  INNER JOIN trn_Rating ra ON ot.RatingId = ra.RatingId
  INNER JOIN trn_RatingAuto ar on ra.RatingId = ar.RatingId
  where  ar.Rate is null 
)

编辑:

您也可以通过以下方式进行更新:

代码语言:javascript
复制
update ar
set Rate  = 0 
FROM trn_account ta
INNER JOIN trn_risk tr  ON ta.AccountId=tr.AccountId
inner join trn_option ot on tr.riskid = ot.riskid
INNER JOIN trn_Rating ra ON ot.RatingId = ra.RatingId
INNER JOIN trn_RatingAuto ar on ra.RatingId = ar.RatingId
where  ar.Rate is null
票数 2
EN

Stack Overflow用户

发布于 2012-10-25 01:52:30

将where从=更改为in

代码语言:javascript
复制
begin transaction
update trn_RatingAuto                                                        
set Rate  = 0 
where rate in (
SELECT ar.Rate
FROM trn_account ta
INNER JOIN trn_risk tr  ON ta.AccountId=tr.AccountId
inner join trn_option ot on tr.riskid = ot.riskid
INNER JOIN trn_Rating ra ON ot.RatingId = ra.RatingId
INNER JOIN trn_RatingAuto ar on ra.RatingId = ar.RatingId
where  ar.Rate is null 
)
票数 0
EN

Stack Overflow用户

发布于 2012-10-25 01:55:45

如果您想更新多个行,则需要将查询更改为"update from“查询...

sql server 2005 'update from' query

像这样:

代码语言:javascript
复制
 update trn_RatingAuto
   set Rate  = 0  
 from trn_RatingAuto
 join (...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13054864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档