Вы не указываете таблицы для Company
иDate
, возможно, вы захотите это исправить.
Стандартный SQL с использованием MERGE
:
MERGE WorkRecord2 T
USING Employee S
ON T.EmployeeRun = S.EmployeeNo
AND Company = '1'
AND Date = '2013-05-06'
WHEN MATCHED THEN DELETE;
Ответ @Devart также является стандартным SQL, хотя и неполным, должен выглядеть примерно так:
DELETE
FROM WorkRecord2
WHERE EXISTS ( SELECT *
FROM Employee S
WHERE S.EmployeeNo = WorkRecord2.EmployeeRun
AND Company = '1'
AND Date = '2013-05-06' );
Важная вещь, о которой следует упомянуть в связи с вышесказанным, это то, что очевидно, что удаление нацелено на одну таблицу, что реализуется во втором примере, когда требуется скалярный подзапрос.
Для меня различные проприетарные синтаксические ответы труднее читать и понимать. Я думаю, что образ мыслей лучше всего описан в ответе @frans eilering, т.е. человек, пишущий код, не обязательно заботится о человеке, который будет читать и поддерживать код.
DELETE
с объединением