Como excluir usando o INNER JOIN com o SQL Server?

Eu quero apagar utilizando INNER JOIN em **SQL Server 2008***.

Mas eu percebo este erro:

Msg 156, Level 15, State 1, Line 15 sintaxe incorreta perto da palavra-chave ' INNER'.

O meu código:

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

Você precisa especificar de que tabela você está apagando, aqui está uma versão com um pseudônimo:

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

Basta adicionar o nome da tabela entre DELETE e FROM de onde você quer excluir registros, pois temos que especificar a tabela a ser excluída. Também remova a cláusula ORDER BY porque não há nada a ser pedido ao excluir registros.

Portanto, a sua última pergunta deve ser assim:

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

Possivelmente isto seja útil para si -

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

Ou tente isto -

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