Ich möchte mit INNER JOIN
in SQL Server 2008 löschen .
Aber ich bekomme diesen Fehler:
Nachricht 156, Ebene 15,
Status 1, Zeile 15 Falsche Syntax in der Nähe des Schlüsselworts 'INNER'.
Mein 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
quelle
quelle
DELETE
mit einem Join verwendetAntworten:
Sie müssen angeben, aus welcher Tabelle Sie löschen möchten. Hier ist eine Version mit einem Alias:
quelle
Fügen Sie einfach den Namen der Tabelle zwischen
DELETE
undFROM
von dem Ort hinzu, an dem Sie Datensätze löschen möchten, da wir die zu löschende Tabelle angeben müssen. Entfernen Sie auch dieORDER BY
Klausel, da beim Löschen von Datensätzen nichts zu bestellen ist.Ihre letzte Anfrage sollte also so aussehen:
quelle
DELETE Employee
aus der Tabelle des Mitarbeiters anstelle derWorkRecord2
Tabelle gelöscht .Möglicherweise ist dies hilfreich für Sie -
Oder versuchen Sie dies -
quelle
Versuche dies:
quelle
Es sollte sein:
quelle
Diese Version sollte funktionieren
quelle
In SQL Server Management Studio kann ich einfach eine
SELECT
Abfrage erstellen .Ich kann es ausführen und alle meine Kontakte werden angezeigt.
Ändern Sie nun das
SELECT
in aDELETE
:Alle Datensätze, die Sie in der
SELECT
Anweisung gesehen haben, werden entfernt.Sie können mit derselben Prozedur sogar eine schwierigere innere Verknüpfung erstellen, zum Beispiel:
quelle
quelle
Versuchen Sie diese Abfrage:
quelle
Ein anderer Weg mit
CTE
.Hinweis: Wir können das
JOIN
Innere nicht verwenden,CTE
wenn Sie möchtendelete
.quelle
Dies ist eine einfache Abfrage, um die Datensätze aus zwei Tabellen gleichzeitig zu löschen.
quelle
Versuchen Sie dies, es könnte helfen
quelle
Hier ist meine SQL Server-Version
quelle
Sie geben die Tabellen für
Company
und nicht anDate
möchten dies möglicherweise beheben.Standard SQL mit
MERGE
:Die Antwort von @Devart ist auch Standard SQL, obwohl unvollständig, sollte eher so aussehen:
Das Wichtige an dem oben Gesagten ist, dass klar ist, dass das Löschen auf eine einzelne Tabelle abzielt, wie im zweiten Beispiel erzwungen, indem eine skalare Unterabfrage erforderlich ist.
Für mich sind die verschiedenen proprietären Syntaxantworten schwerer zu lesen und zu verstehen. Ich denke, die Denkweise für wird am besten in der Antwort von @frans eilering beschrieben, dh die Person, die den Code schreibt, kümmert sich nicht unbedingt um die Person, die den Code lesen und pflegen wird.
quelle
Folgendes verwende ich derzeit zum Löschen oder sogar Aktualisieren:
quelle