SQL连接更新

时间:2011-04-14 08:18:03

标签: sql sql-update

我有两张桌子。第一个有empid和managerid,而第二个表有empid和其他列。但是table2没有任何元组。如何更新table2,以便对于特定的管理器,如果empid不存在,那么它将被添加到table2中,否则table2的其他字段将被更新。

简而言之,如何使用连接表更新没有任何行的表。

我正在使用此命令

UPDATE EMPLOYEE_GOAL_TABLE 
SET ISGoal1='yes' 
FROM EMPLOYEE_TABLE 
LEFT OUTER JOIN EMPLOYEE_GOAL_TABLE 
ON EMPLOYEE_TABLE.EmployeeID = EMPLOYEE_GOAL_TABLE.EmployeeID 
WHERE EMPLOYEE_GOAL_TABLE.EmployeeID IS null.

但这显示没有行受影响。

2 个答案:

答案 0 :(得分:0)

是您的基本查询返回任何记录吗?

当你

时,你会得到什么?
SELECT *
FROM EMPLOYEE_TABLE 
LEFT OUTER JOIN EMPLOYEE_GOAL_TABLE 
ON EMPLOYEE_TABLE.EmployeeID = EMPLOYEE_GOAL_TABLE.EmployeeID 
WHERE EMPLOYEE_GOAL_TABLE.EmployeeID IS null

答案 1 :(得分:0)

如果您想在EMPLOYEE_GOAL_TABLE EMPLOYEE_TABLE中添加缺失记录,那么您需要在INSERT上执行UPDATE而不是EMPLOYEE_GOAL_TABLE EMPLOYEE_GOAL_TABLE }。如果记录不存在,则无法更新INSERT INTO EMPLOYEE_GOAL_TABLE (EmployeeID, ISGoal1) SELECT EMPLOYEE_TABLE.EmployeeID, 'yes' FROM EMPLOYEE_TABLE WHERE EMPLOYEE_TABLE.EmployeeID NOT IN ( SELECT DISTINCT EMPLOYEE_GOAL_TABLE.EmployeeID FROM EMPLOYEE_GOAL_TABLE ) 中的记录。 (我希望我能正确理解你的要求。:))

因此,如果目标是添加缺失的记录,那么就这样做......

{{1}}