【问题标题】:update query based in values from the subquery根据子查询中的值更新查询
【发布时间】:2016-10-20 17:07:58
【问题描述】:
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)

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

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

【问题讨论】:

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


    【解决方案1】:

    你根本不需要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 
    

    【讨论】:

    • 对不起,我的例子不好,因为如果我正在工作,如果我进行内部联接,我想要更新的行将不会出现在从内部联接返回的表中,这就是为什么我正在使用子查询,nvm你是对的,只需要改变ON的条件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2022-08-16
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多