2011-01-23 75 views
2

我有一個在表上運行的查詢,並拉出2個字段。 我想帶他們,並使用UPDATE語句,使用它們的值作爲WHERE和SET。如何在SQL中使用嵌套查詢進行更新

例如:

select name, address from xxx..... 

我要取的名字&地址,這

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

感謝

+0

我不明白問題是什麼......你能給出一個更具體的例子,用一些代碼? –

+0

這兩個表結構都需要什麼是與這兩個表 –

+0

關係的字段的名稱請解釋您的需要提供您的表結構或類似的東西解釋的東西! – Harish

回答

8

給做這樣的嘗試

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

這是一個ssumes該地址字段(您要加入的)是一個與地址字段表中的一個關係要更新

這也可以寫成

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

由於更新表是訪問FROM/WHERE子句,除了它不能被別名。

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聲明。