Θέλω να διαγράψω χρησιμοποιώντας INNER JOIN
σε SQL Server 2008.
Αλλά λαμβάνω αυτό το σφάλμα:
Msg 156, Επίπεδο 15, Κατάσταση 1, Γραμμή 15 Εσφαλμένη σύνταξη κοντά στη λέξη-κλειδί 'INNER'.
Ο κώδικάς μου:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Πρέπει να καθορίσετε από ποιον πίνακα διαγράφετε, εδώ είναι μια έκδοση με ψευδώνυμο:
DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Απλά προσθέστε το όνομα του πίνακα μεταξύ των DELETE
και FROM
από τον οποίο θέλετε να διαγράψετε εγγραφές, επειδή πρέπει να καθορίσουμε τον πίνακα προς διαγραφή. Επίσης, αφαιρέστε τη ρήτρα ORDER BY
επειδή δεν υπάρχει τίποτα για να διατάξετε κατά τη διαγραφή εγγραφών.
Έτσι, το τελικό σας ερώτημα θα πρέπει να είναι κάπως έτσι:
DELETE WorkRecord2
FROM WorkRecord2
INNER JOIN Employee
ON EmployeeRun=EmployeeNo
WHERE Company = '1'
AND Date = '2013-05-06';
Πιθανόν αυτό να είναι χρήσιμο για σας -
DELETE FROM dbo.WorkRecord2
WHERE EmployeeRun IN (
SELECT e.EmployeeNo
FROM dbo.Employee e
WHERE ...
)
Ή δοκιμάστε αυτό...
DELETE FROM dbo.WorkRecord2
WHERE EXISTS(
SELECT 1
FROM dbo.Employee e
WHERE EmployeeRun = e.EmployeeNo
AND ....
)