Je souhaite supprimer à l'aide INNER JOIN
de SQL Server 2008 .
Mais je reçois 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'
sql
sql-server
sql-server-2008
inner-join
sql-delete
nettoon493
la source
la source
DELETE
une jointureRéponses:
Vous devez spécifier de quelle table vous supprimez, voici une version avec un alias:
la source
Ajoutez simplement le nom de la table entre
DELETE
etFROM
d'où vous souhaitez supprimer les enregistrements car nous devons spécifier la table à supprimer. Supprimez également laORDER BY
clause car il n'y a rien à commander lors de la suppression d'enregistrements.Votre requête finale devrait donc être comme ceci:
la source
DELETE Employee
supprimera de la table des employés au lieu de laWorkRecord2
table.Cela peut-il vous être utile -
Ou essayez ceci -
la source
Essaye ça:
la source
Ça devrait être:
la source
Cette version devrait fonctionner
la source
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 changez le
SELECT
en aDELETE
:Tous les enregistrements que vous avez vus dans la
SELECT
déclaration seront supprimés.Vous pouvez même créer une jointure interne plus difficile avec la même procédure, par exemple:
la source
la source
Essayez cette requête:
la source
Une autre façon d'utiliser
CTE
.Remarque: nous ne pouvons pas utiliser l'
JOIN
intérieurCTE
lorsque vous le souhaitezdelete
.la source
Il s'agit d'une requête simple pour supprimer les enregistrements de deux tables à la fois.
la source
Essayez ceci, cela pourrait aider
la source
Voici ma version de SQL Server
la source
Vous ne spécifiez pas les tables pour
Company
etDate
, vous voudrez peut-être corriger cela.SQL standard utilisant
MERGE
:La réponse de @Devart est également Standard SQL bien qu'incomplète, devrait ressembler davantage à ceci:
La chose importante à noter à propos de ce qui précède est qu'il est clair que la suppression cible une seule table, comme imposé dans le deuxième exemple en exigeant une sous-requête scalaire.
Pour moi, les différentes réponses de syntaxe propriétaires sont plus difficiles à lire et à comprendre. Je suppose que l'état d'esprit est mieux décrit dans la réponse de @frans eilering, c'est-à-dire que la personne qui écrit le code ne se soucie pas nécessairement de la personne qui lira et maintiendra le code.
la source
Voici ce que j'utilise actuellement pour supprimer ou même mettre à jour:
la source