Обновление в соединении SQL - PullRequest
1 голос
/ 14 апреля 2011

У меня есть две таблицы.Первая имеет 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 голосов
/ 14 апреля 2011

Если вы хотите добавить отсутствующие записи в 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
)
0 голосов
/ 14 апреля 2011

ваш базовый запрос возвращает какие-либо записи?

что вы получаете, когда вы

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

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...