2012-05-31 134 views
4

我試圖更新列,而將其加入到另一個表。我用下面的查詢,但它給了我錯誤。如何在連接兩個表時更新Sql Server表列?

UPDATE TABLE_2 
INNER JOIN 
     TABLE_1 
ON  (T2.ID=T1.ID) 
SET  TABLE_2.DEPT='HUMAN RESOURCE' 
WHERE TABLE_2.DEPT='HR' 
AND T1.COMPANY =1 

任何人都可以幫助我嗎?

謝謝。

+0

嘗試用用這兩個表左或右連接而不是內連接。 – Addicted

+0

是Oracle,MySQL還是Sql Server? – codingbiz

+0

我正在使用SQL Server.and我試過使用內連接,左連接。但它不起作用。@ M_M解決了這個問題。檢查下面的答案。 – vamps

回答

3

首先,您使用的表別名並沒有在任何地方定義(T2,T1等),這可能很好地解決您的問題。否則,正確的語法非常依賴於SQL風格。

例如,在SQL Server中的語法是

UPDATE T2 
SET T2.dept = 'HUMAN RESOURCE' 
FROM Table2 T2 
    INNER JOIN Table1 T1 
     ON T1.[ID] = T2.[ID] 

雖然你甚至都不需要參加這裏真的,你只是想

UPDATE Table2 T2 
SET T2.dept = 'HUMAN RESOURCE' 
WHERE EXISTS(SELECT * FROM Table1 T1 
     ON T1.[ID] = T2.[ID]) 

在MySQL中的語法是

UPDATE FROM TABLE2 AS T2 
    INNER JOIN TABLE1 as T1 
     ON T2.id = T1.id 
SET T2.Dept = 'Human Resources' 

當然,WHERE EXISTS的方法也適用於MySQL

UPDATE FROM Table2 AS T2 
    SET Dept="Human Resources" 
    WHERE EXISTS (SELECT * FROM Table1 T1 
      ON T1.[ID] = T2.[ID]); 
+0

謝謝!有用! – vamps

+0

@vamps太棒了!樂於幫助,並歡迎Stack Overflow。 –

0

如果是MSSQL,那麼查詢應該是

UPDATE TABLE_2 SET DEPT='Human Resource' 
FROM TABLE_1 
WHERE TABLE_2.ID = TABLE_1.ID 
AND TABLE_2.DEPT = 'HR' 
AND TABLE_1.COMPANY = 1 
0

UPDATE TABLE_2 SET DEPT='Human Resource' FROM TABLE_1,Table2 WHERE TABLE_2.ID = TABLE_1.ID AND TABLE_2.DEPT = 'HR' AND TABLE_1.COMPANY = 1

因爲當我們在加入則更新表我們從接近