Jag vill radera med hjälp av INNER JOIN
i SQL Server 2008.
Men jag får detta fel:
Msg 156, Level 15, State 1, Line 15 Felaktig syntax nära nyckelordet 'INNER'.
Min kod:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Du måste ange vilken tabell du tar bort från, här är en version med ett alias:
DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Lägg bara till namnet på den tabell mellan DELETE
och FROM
från vilken du vill ta bort poster eftersom vi måste ange vilken tabell som ska tas bort. Ta också bort klausulen ORDER BY
eftersom det inte finns något att ordna när du raderar poster.
Så din slutliga fråga bör se ut så här:
DELETE WorkRecord2
FROM WorkRecord2
INNER JOIN Employee
ON EmployeeRun=EmployeeNo
WHERE Company = '1'
AND Date = '2013-05-06';
Kan detta vara till hjälp för dig -
DELETE FROM dbo.WorkRecord2
WHERE EmployeeRun IN (
SELECT e.EmployeeNo
FROM dbo.Employee e
WHERE ...
)
Eller prova det här -
DELETE FROM dbo.WorkRecord2
WHERE EXISTS(
SELECT 1
FROM dbo.Employee e
WHERE EmployeeRun = e.EmployeeNo
AND ....
)