Question Comment supprimer en utilisant INNER JOIN avec SQL Server?


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

Mais j'ai cette erreur:

Msg 156, niveau 15, état 1, ligne 15
  Syntaxe incorrecte près du mot clé 'INNER'.

Mon code:

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

882
2018-05-10 11:38


origine


Réponses:


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'

1576
2018-05-10 11:43



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. Supprimer également ORDER BY clause car il n'y a rien à commander lors de la suppression des enregistrements.

Donc, votre dernière requête devrait être comme ceci:

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

100
2018-05-10 12:07



Essaye ça:

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

26
2018-05-10 17:37



Possible cela peut être utile pour vous -

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

21
2018-05-10 12:12



CA devrait etre:

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

11
2017-08-17 08:15



Cette version devrait fonctionner

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

8
2017-08-12 19:56



Essayez cette requête:

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



Dans SQL Server Management Studio, je peux facilement créer une requête SELECT.

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

Je peux l'exécuter, et tous mes contacts sont affichés.

Maintenant, changez le SELECT en un DELETE:

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

Tous les enregistrements que vous avez vu dans l'instruction SELECT seront supprimés.

Vous pouvez même créer une jointure interne plus difficile avec la même procédure, par exemple:

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