Pregunta Cómo eliminar el uso de INNER JOIN con SQL Server?


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'

882
2018-05-10 11:38


origen


Respuestas:


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'

1576
2018-05-10 11:43



Solo agregue el nombre de la tabla entre DELETE y FROM desde donde desea eliminar registros porque tenemos que especificar la tabla para eliminar. Eliminar también ORDER BY clá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';

100
2018-05-10 12:07



Prueba esto:

DELETE FROM WorkRecord2 
       FROM Employee 
Where EmployeeRun=EmployeeNo
      And Company = '1' 
      AND Date = '2013-05-06'

26
2018-05-10 17:37



Posible esto sea útil para usted -

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 ....
)

21
2018-05-10 12:12



Debería ser:

DELETE zpost 
FROM zpost 
INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid)
WHERE zcomment.icomment = "first"       

11
2017-08-17 08:15



Esta versión debería funcionar

DELETE WorkRecord2
FROM WorkRecord2 
INNER JOIN Employee ON EmployeeRun=EmployeeNo
Where Company = '1' AND Date = '2013-05-06'

8
2017-08-12 19:56



Prueba esta consulta:

DELETE WorkRecord2, Employee 
FROM WorkRecord2 
INNER JOIN Employee ON (tbl_name.EmployeeRun=tbl_name.EmployeeNo)
WHERE tbl_name.Company = '1' 
AND tbl_name.Date = '2013-05-06';

8
2017-07-16 10:16



En SQL Server Management Studio, puedo crear fácilmente una consulta SELECT.

SELECT Contact.Naam_Contactpersoon, Bedrijf.BedrijfsNaam, Bedrijf.Adres, Bedrijf.Postcode
FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

Puedo ejecutarlo y se muestran todos mis contactos.

Ahora cambie el SELECT a un DELETE:

DELETE Contact
FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

Todos los registros que viste en la declaración SELECT serán eliminados.

Incluso puede crear una unión interna más difícil con el mismo procedimiento, por ejemplo:

DELETE FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf
INNER JOIN LoginBedrijf ON Bedrijf.IDLoginBedrijf = LoginBedrijf.IDLoginBedrijf

6
2018-06-01 21:08



 DELETE a FROM WorkRecord2 a 
       INNER JOIN Employee b 
       ON a.EmployeeRun = b.EmployeeNo 
       Where a.Company = '1' 
       AND a.Date = '2013-05-06'

4
2018-04-28 16:00