Ви не визначаєте таблиці для 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
приєднанням