-1

我正在尝试进行更新,但遇到了问题(使用 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)
4

2 回答 2

0

You can simply join both tables,

UPDATE  a
SET     a.myValue = b.myValue
FROM    myTable a
        INNER JOIN someOtherTable b
            ON a.ID = b.ID
WHERE   a.CustName = 'test'
于 2013-05-09T15:12:50.817 回答
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 子句,因为如果不是,我认为它将使用空值更新

于 2013-05-09T14:51:17.677 回答