Noriu ištrinti duomenis naudodamas INNER JOIN
SQL Server 2008.
Tačiau gaunu šią klaidą:
Msg 156, Level 15, State 1, Line 15
Neteisinga sintaksė prie raktinio žodžio 'INNER'.
Mano kodas:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Reikia nurodyti, iš kokios lentelės šalinate, čia pateikiama versija su slapyvardžiu:
DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Tarp DELETE
ir FROM
įrašykite lentelės, iš kurios norite ištrinti įrašus, pavadinimą, nes turime nurodyti lentelę, kurią reikia ištrinti. Taip pat pašalinkite sąlygą ORDER BY
, nes trinant įrašus nėra ką tvarkyti.
Taigi jūsų galutinė užklausa turėtų būti tokia:
DELETE WorkRecord2
FROM WorkRecord2
INNER JOIN Employee
ON EmployeeRun=EmployeeNo
WHERE Company = '1'
AND Date = '2013-05-06';
Ar tai gali būti naudinga jums -
DELETE FROM dbo.WorkRecord2
WHERE EmployeeRun IN (
SELECT e.EmployeeNo
FROM dbo.Employee e
WHERE ...
)
Arba pabandykite tai -
DELETE FROM dbo.WorkRecord2
WHERE EXISTS(
SELECT 1
FROM dbo.Employee e
WHERE EmployeeRun = e.EmployeeNo
AND ....
)