我有一个在桌面上运行的查询,并抽出2个字段。 我想采用它们,并使用UPDATE语句,将它们的值用作WHERE和SET。
例如:
select name, address from xxx.....
我想取名字&地址并执行此操作
update yyy
set fullname=(name I pulled before)
where address=(address I pulled before)
感谢
答案 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中,您可以弄清楚如何确定FullName
和Address
,并且CTE是一种“内联”视图,仅对下一个语句有效 - 在这种情况下,对于UPDATE
声明。