2009-08-10 70 views
4

更新值必须更新基于值从另一个表值:我如何从另一个TSQL

update OracleOb..NS.myTable set name = (select name from myTable1 where id = 1) 
    where id = 1 

这里的SQL有一些问题。我如何从myTable1获得价值并将其设置为myTable?

我正在使用MS SQL 2005.

对不起,我必须再次编辑此问题。表myTable是Oracle表的一个链接对象。我尝试了建议的答案,但我得到的错误信息:

The OLE DB provider "OraOLEDB.Oracle" for linked server "OracleOb" reported an error. The provider reported an unexpected catastrophic failure. 

回答

13
UPDATE m 
SET m.name = m1.name 
FROM MyTable m 
    JOIN MyTable1 m1 ON m.id = m1.id 
WHERE m.id = 1 
0
-- Remove the where clause if you are trying to update more than just the 1 record. 

UPDATE MyTable 
SET  Name = B.Name 
FROM MyTable A JOIN MyTable1 B ON A.ID = B.ID 
WHERE ID = 1 
0

您可以使用类似于连接:

update myTable 
set name = myTable1.name 
from myTable inner join myTable1 
    on myTable.id = myTable1.id myTable 
     where id = 1 
0
update myTable set 
    name = t1.name 
from myTable as t 
    join myTable1 as t1 on t.id = t1.id 
    where t.id = 1 
0

下面是检查其他两个表更新:

UPDATE C SET C.username = A.UserName FROM Staged.ClientEmploye e C JOIN [dbo]。[TempE] E ON C.id = E.Fax AND C.ssn = E.SSN JOIN NW_SEFL.CFG.Account A ON A.EmployeeId = E.EmployeeId WHERE E.Fax = @StageEmpID