Hur raderar man med INNER JOIN i SQL Server?

Jag vill radera med hjälp av INNER JOIN i SQL Server 2008.

Men jag får detta fel:

Msg 156, Level 15, State 1, Line 15 Felaktig syntax nära nyckelordet 'INNER'.

Min kod:

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

Du måste ange vilken tabell du tar bort från, här är en version med ett alias:

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

Lägg bara till namnet på den tabell mellan DELETE och FROM från vilken du vill ta bort poster eftersom vi måste ange vilken tabell som ska tas bort. Ta också bort klausulen ORDER BY eftersom det inte finns något att ordna när du raderar poster.

Så din slutliga fråga bör se ut så här:

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

Kan detta vara till hjälp för dig -

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

Eller prova det här -

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