Wie löscht man mit INNER JOIN mit SQL Server?

Ich möchte mithilfe von "INNER JOIN" in SQL Server 2008 löschen.

Aber ich erhalte diesen Fehler:

Msg 156, Level 15, State 1, Line 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'
Lösung

Sie müssen angeben, aus welcher Tabelle Sie löschen, hier ist eine Version mit einem Alias:

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

Fügen Sie einfach den Namen der Tabelle zwischen DELETE und FROM ein, aus der Sie Datensätze löschen wollen, da wir die zu löschende Tabelle angeben müssen. Entfernen Sie auch die Klausel "ORDER BY", da es beim Löschen von Datensätzen nichts zu ordnen gibt.

Ihre endgültige Abfrage sollte also wie folgt aussehen:

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

Möglicherweise ist dies hilfreich für Sie -

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

Oder versuchen Sie dies -

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