如何使用SQL中的嵌套查询进行更新

时间:2011-01-23 09:50:44

标签: sql sql-server

我有一个在桌面上运行的查询,并抽出2个字段。 我想采用它们,并使用UPDATE语句,将它们的值用作WHERE和SET。

例如:

select name, address from xxx.....

我想取名字&地址并执行此操作

update yyy 
set fullname=(name I pulled before) 
where address=(address I pulled before)

感谢

2 个答案:

答案 0 :(得分:8)

试一试

Update t
Set t.yyyy = q.Name
From TableToUpdate t
Join AddressTable q on q.Address = t.Address

这假定地址字段(您正在加入)与您要更新的表中的地址字段是一对一的关系

这也可以写成

Update TableToUpdate
Set yyyy = q.Name
From AddressTable q
WHERE q.Address = TableToUpdate.Address

由于可以在FROM / WHERE子句中访问更新表,除了它不能别名。

答案 1 :(得分:2)

如果您正在使用SQL Server 2005或更高版本(您未指定....),则可以使用公用表表达式(CTE):

;WITH UpdateData AS
(
    SELECT
          FullName,
          Address
    FROM 
          dbo.SomeTableYouUse
    WHERE
          (some critiera)
)
UPDATE dbo.yyy 
SET fullname = ud.FullName
FROM UpdateData ud
WHERE address = ud.Address

在您的CTE中,您可以弄清楚如何确定FullNameAddress,并且CTE是一种“内联”视图,仅对下一个语句有效 - 在这种情况下,对于UPDATE声明。