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