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'
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'
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';
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 ....
)