2011-03-29 126 views
4
信息

我有以下問題:SQL更新一個表進行比較,從兩個表

讓我們假設我定義了兩個表

USERS

ID (int. key) 
NAME (String) 
SALARY (currency) 

USERSADD

ID (int. key) 
TYPE (String) 

第二張表爲用戶存儲其他信息。顯然,真正的表格更復雜,但這是這個想法。 (不要問我爲什麼要創建另一個表,而不是將字段添加到第一個表中,這是我老闆的想法)。

現在我想更新第一個表,如果滿足第二個表的條件。
像這樣:

UPDATE USERS U, USERSADD A 
SET U.SALARY = 1000 
WHERE U.ID = A.ID 
AND A.TYPE = 'Manager' 

在NetBeans德比我有一個錯誤:「在列X發現」,它指的是兩個表(UPDATE USERS U, USERSADD A)之間的逗號。我希望我已經清楚了......

有人會友善地給我提供解決方案嗎?提前致謝。

回答

2
UPDATE USERS 
     SET USERS.SALARY = 1000 
    FROM USERS JOIN USERSADD ON USERS.ID = USERSADD.ID 
WHERE USERSADD.TYPE ='MANAGER' 
1

您使用的語法使用隱式INNER JOIN。你最好使用顯式連接。嘗試是這樣的:

UPDATE Users 
SET Salary = 1000 
FROM Users u 
INNER JOIN Usersadd a on u.id=a.id 
    AND a.Type = 'Manager 
+0

不幸的是,FROM子句是不是在德比UPDATE語句的選項。 – 2015-07-18 01:06:34

4
UPDATE USERS 
SET SALARY = 1000 
WHERE ID IN (
SELECT ID FROM USERSADD 
WHERE TYPE = 'Manager') 
0
UPDATE USERSU 
SET SALARY = 1000 
WHERE exist IN (
     SELECT ID 
     FROM USERSADD A 
     WHERE TYPE = 'Manager' 
      AND U.id = A.id 
    )