我正在尝试进行更新,但我遇到了问题(使用microsoft sql server)
update mytable
set myvalue=
(
(select myvalue from someothertable
where someothertable.id=mytable.id)
)
from table mytable
where mytable.custname='test'
基本上,如果发生这种情况,子查询可能不会返回任何结果我想调用不同的子查询:
(select myvalue from oldtable
where oldtable.id=mytable.id)
答案 0 :(得分:0)
好吧,你可以先运行第二个查询,然后再运行第一个查询。 这样,只有当第一个查询可以带来它们时才会覆盖这些值,并且当(原始)第一个查询不会带来任何结果时,它们将具有第一个查询的结果。
另外,我认为你的第二个查询中有一个输入错误的表名。
update mytable
set myvalue=
(
select myvalue from oldtable
where oldtable.id=mytable.id
)
from table mytable
where mytable.custname='test'
and exists (select 1 from oldtable
where oldtable.id=mytable.id)
update mytable
set myvalue=
(
select myvalue from someothertable
where someothertable.id=mytable.id
)
from table mytable
where mytable.custname='test'
and exists ( select 1 from someothertable
where someothertable.id=mytable.id)
编辑:你需要添加exists子句,因为如果没有,它会用null值更新,我想
答案 1 :(得分:0)
您可以简单地加入两个表格,
UPDATE a
SET a.myValue = b.myValue
FROM myTable a
INNER JOIN someOtherTable b
ON a.ID = b.ID
WHERE a.CustName = 'test'