Comment faire pour Supprimer à l'aide d'une JOINTURE INTERNE avec SQL Server?
Je veux supprimer à l'aide de INNER JOIN
dans SQL Server 2008.
Mais j'obtiens cette erreur:
Msg 156, Niveau 15, État 1, Ligne 15
Syntaxe incorrecte près du mot clé "INTÉRIEURE".
Mon code:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
- Exemple C dans le documentation montre comment utiliser
DELETE
avec une jointure
Vous devez vous connecter pour publier un commentaire.
Vous devez indiquer à quelle table vous sont la suppression de partir, voici une version avec un alias:
w
en face dedelete
mot-clé?Il suffit d'ajouter le nom de la table entre
DELETE
etFROM
partir de laquelle vous souhaitez supprimer des enregistrements, parce que nous devons spécifier la table à supprimer. Également supprimerORDER BY
clause car rien n'est à l'ordre lors de la suppression d'enregistrements.Donc votre dernière requête devrait ressembler à ceci:
DELETE Employee
va supprimer de l'Employé de la table au lieu deWorkRecord2
table.Possible que ce soit d'utile pour vous -
Ou essayer ce -
Essayez ceci:
Il devrait être:
Dans SQL Server Management Studio, je peux facilement créer une
SELECT
requête.Je peux l'exécuter, et tous mes contacts sont affichés.
Maintenant modifier la
SELECT
à unDELETE
:Tous les enregistrements que vous avez vu dans la
SELECT
déclaration sera retirée.Vous pouvez même créer un plus difficile jointure interne avec la même procédure, par exemple:
Cette version devrait fonctionner
Essayer cette requête :
Une autre manière, en utilisant des
CTE
.Remarque : Nous ne pouvons pas utiliser
JOIN
à l'intérieur deCTE
quand vous voulezdelete
.Essayer cela, il peut aider à
C'est une simple requête pour supprimer les enregistrements de deux tables à la fois.
Voici ma version de SQL Server
Vous ne spécifiez pas les tables pour
Company
etDate
, vous pouvez résoudre ce problème.Standard SQL à l'aide de
MERGE
:La réponse de @Devart est aussi la Norme SQL quoique incomplet, devrait ressembler à ceci:
La chose importante à noter à propos de ce qui précède est qu'il est clair que la suppression est le ciblage d'une seule table, comme appliqué dans le deuxième exemple en exigeant une sous-requête scalaire.
Pour moi, les différents propriétaires de la syntaxe réponses sont difficiles à lire et à comprendre. Je suppose que l'état d'esprit pour mieux décrit dans la réponse par @frans eilering c'est à dire la personne qui écrit le code n'a pas nécessairement de soins sur la personne qui va lire et maintenir le code.
Voici ce que j'utilise actuellement pour la suppression ou la même, la mise à jour: