根据子查询中的值更新查询

时间:2016-10-20 17:07:59

标签: sql sql-server sql-server-2008 subquery

declare @exampleTable table(
    id int,
    Quantity int
)

declare @exampleTable_Aux table(
    id int,
    Quantity int
)

insert into @exampleTable values(1,5),(2,8)
insert into @exampleTable_Aux values(1,3),(5,8)

select * from @exampleTable
select di_aux.id from @exampleTable di_aux inner join @exampleTable_Aux dij on di_aux.id=dij.id

declare @Quantity int;

UPDATE di SET Quantity=22
FROM @exampleTable di WHERE di.id in (select di_aux.id from @exampleTable di_aux inner join @exampleTable_Aux dij on di_aux.id=dij.id)

知道我想要的是从子查询中获取值的数量(例如,无效仅表示我假装的内容)

UPDATE di SET Quantity=@Quantity+di.Quantity
FROM @exampleTable di WHERE di.id in (select di_aux.id,@Quantity=dij.Quantity from @exampleTable di_aux inner join @exampleTable_Aux dij on di_aux.id=dij.id)

应该得到表格: 如果甚至可以更新子查询的值中的查询库,我该怎么做呢?

  id Quantity
1 1  8
2 2  8

1 个答案:

答案 0 :(得分:2)

您根本不需要sub-query。加入Update

只需@exampleTable@exampleTable_Aux

这是正确的方法

UPDATE di_aux
SET    di_aux.Quantity = dij.Quantity + di_aux.Quantity
FROM   @exampleTable di_aux
       INNER JOIN @exampleTable_Aux dij
               ON di_aux.id = dij.id