¿Cómo puedo eliminar usando INNER JOIN con SQL Server?

Resuelto nettoon493 asked hace 11 años • 14 respuestas

Quiero eliminar el uso INNER JOINen SQL Server 2008 .

Pero me sale este error:

Mensaje 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'
nettoon493 avatar May 10 '13 18:05 nettoon493
Aceptado

Debe especificar de qué tabla está eliminando. 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'
Taryn avatar May 10 '2013 11:05 Taryn

Simplemente agregue el nombre de la tabla entre DELETEy FROMdesde donde desea eliminar registros, porque tenemos que especificar la tabla a eliminar. También elimine la ORDER BYcláusula porque no hay nada que ordenar al eliminar registros.

Entonces su consulta final debería ser así:

    DELETE WorkRecord2 
      FROM WorkRecord2 
INNER JOIN Employee 
        ON EmployeeRun=EmployeeNo
     WHERE Company = '1' 
       AND Date = '2013-05-06';
Himanshu avatar May 10 '2013 12:05 Himanshu

Es posible que esto te resulte útil.

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 ....
)
Devart avatar May 10 '2013 12:05 Devart

Prueba esto:

DELETE FROM WorkRecord2 
       FROM Employee 
Where EmployeeRun=EmployeeNo
      And Company = '1' 
      AND Date = '2013-05-06'
Behrouz Bakhtiari avatar May 10 '2013 17:05 Behrouz Bakhtiari