Quiero borrar usando INNER JOIN
en SQL Server 2008.
Pero me sale este error:
Msg 156, Nivel 15, Estado 1, Línea 15 Sintaxis incorrecta cerca de la palabra clave 'INNER'.
Mi código:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Es necesario especificar de qué tabla se está borrando, aquí hay una versión con un alias:
DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Sólo tiene que añadir el nombre de la tabla entre DELETE
y FROM
de donde quiere eliminar los registros porque tenemos que especificar la tabla a eliminar. También elimine la cláusula ORDER BY
porque no hay nada que ordenar mientras se eliminan los registros.
Así que su consulta final debe ser así:
DELETE WorkRecord2
FROM WorkRecord2
INNER JOIN Employee
ON EmployeeRun=EmployeeNo
WHERE Company = '1'
AND Date = '2013-05-06';
Es posible que esto te sirva de ayuda -
DELETE FROM dbo.WorkRecord2
WHERE EmployeeRun IN (
SELECT e.EmployeeNo
FROM dbo.Employee e
WHERE ...
)
O prueba esto -
DELETE FROM dbo.WorkRecord2
WHERE EXISTS(
SELECT 1
FROM dbo.Employee e
WHERE EmployeeRun = e.EmployeeNo
AND ....
)