Comment supprimer en utilisant INNER JOIN avec SQL Server ?

Je veux supprimer en utilisant INNER JOIN dans SQL Server 2008.

Mais j'obtiens cette erreur :

Msg 156, Level 15, State 1, Line 15 Syntaxe incorrecte près du mot-clé 'INNER&#39 ;.

Mon code :

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

Vous devez spécifier de quelle table vous supprimez, voici une version avec un alias :

DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
  ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Commentaires (10)

Ajoutez simplement le nom de la table entre DELETE et FROM d'où vous voulez supprimer les enregistrements car nous devons spécifier la table à supprimer. Supprimez également la clause ORDER BY car il n'y a rien à ordonner lors de la suppression d'enregistrements.

Votre requête finale devrait donc ressembler à ceci :

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

Cela pourrait vous être utile -

DELETE FROM dbo.WorkRecord2 
WHERE EmployeeRun IN (
    SELECT e.EmployeeNo
    FROM dbo.Employee e
    WHERE ...
)

Ou essayez ceci -

DELETE FROM dbo.WorkRecord2 
WHERE EXISTS(
    SELECT 1
    FROM dbo.Employee e
    WHERE EmployeeRun = e.EmployeeNo
        AND ....
)
Commentaires (1)