2012-04-17 45 views
1

我正嘗試使用帶有子查詢的更新語句的內部聯接......請問您可以幫助我解決Sytax問題---還有,您如何使用SQL服務器中別名的AS子句? 以下是我想做的事:在更新語法中使用內部聯接和子查詢

Update Table1 
inner join table2 
set table1.value1 = (select table2.value1 where table1.value 1 ....) 

什麼想法?

回答

6

如果需要使用子查詢來執行更新,你可以這樣來做:

UPDATE t1 
SET t1.value = t2.value 
FROM Table1 t1 
JOIN 
(
    SELECT id, value 
    FROM table2 
) t2 
ON t1.id = t2.id 
+1

我想你的意思是'SET t1.value',否則你會得到錯誤「多部分標識符」table1.value「無法綁定」 – 2012-04-17 15:24:26

+0

@ConradFrix是的,這就是我的意思,我修好了它。感謝您指出。 – Taryn 2012-04-17 15:25:08

1

你應該嘗試

UPDATE table1 SET t1.value1 = t2.value2 
FROM table1 t1 
INNER JOIN table2 t2 
    ON t1.field1 = t2.field2 
+1

這就是MySQL語法,問題在於SQL Server – Andomar 2012-04-17 14:49:52

+0

@Andomar:是的,謝謝,我意識到這太晚了,編輯了我的答案。感謝您指出 – Marco 2012-04-17 14:50:36

2

一種方法是別名表:

update t1 
set table1.value1 = t2.value1 
from table1 as t1 
join table2 as t2 
on  t1.id = t2.t1_id 
+0

如果您需要一個子查詢來確定table1.value1的值,那該怎麼辦? =(選擇??) – 2012-04-17 14:51:22

0
UPDATE Table1 t1 
    INNER JOIN (
     SELECT id, value 
     FROM table2 
    ) t2 USING(id) 
SET t1.value = t2.value