我有两张桌子。第一个有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.
但这显示没有行受影响。
答案 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}}