Ako odstrániť pomocou INNER JOIN v serveri SQL Server?

Chcem vymazať pomocou INNER JOIN v SQL Server 2008.

Ale dostanem túto chybu:

Msg 156, Level 15, State 1, Line 15 Nesprávna syntax v blízkosti kľúčového slova 'INNER'.

Môj kód:

DELETE FROM WorkRecord2 
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Riešenie

Musíte určiť, z akej tabuľky odstraňujete, tu je verzia s aliasom:

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

Stačí pridať názov tabuľky medzi DELETE a FROM, z ktorej chcete odstrániť záznamy, pretože musíme špecifikovať tabuľku, ktorá sa má odstrániť. Taktiež odstráňte klauzulu ORDER BY, pretože pri mazaní záznamov nie je čo zoraďovať.

Takže váš konečný dotaz by mal vyzerať takto:

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

Je možné, že vám to pomôže -

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

Alebo skúste toto -

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