Come cancellare usando INNER JOIN con SQL Server?

Voglio cancellare usando INNER JOIN in SQL Server 2008.

Ma ottengo questo errore:

Msg 156, Livello 15, Stato 1, Linea 15 Sintassi errata vicino alla parola chiave 'INNER'.

Il mio codice:

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

Dovete specificare da quale tabella state cancellando, ecco una versione con un alias:

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

Aggiungete solo il nome della tabella tra DELETE e FROM da dove volete cancellare i record perché dobbiamo specificare la tabella da cancellare. Rimuovi anche la clausola ORDER BY perché non c'è niente da ordinare mentre cancelli i record.

Quindi la tua query finale dovrebbe essere come questa:

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

Possibile che questo sia utile per voi -

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

Oppure prova questo -

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