Kako izbrisati z INNER JOIN v strežniku SQL Server?

V strežniku SQL Server 2008 želim izbrisati z uporabo INNER JOIN.

Vendar dobim to napako:

Sporočilo 156, raven 15, stanje 1, vrstica 15 Nepravilna sintaksa v bližini ključne besede 'INNER'.

Moja koda:

DELETE FROM WorkRecord2 
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Rešitev

Določiti morate, iz katere tabele izbrišete podatke, tukaj je različica z vzdevkom:

DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
  ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
Komentarji (10)

Med DELETE in FROM dodajte ime tabele, iz katere želite izbrisati zapise, saj moramo določiti tabelo, ki jo želimo izbrisati. Prav tako odstranite klavzulo ORDER BY, ker pri brisanju zapisov ni treba ničesar urejati.

Vaša končna poizvedba naj bo torej takšna:

    DELETE WorkRecord2 
      FROM WorkRecord2 
INNER JOIN Employee 
        ON EmployeeRun=EmployeeNo
     WHERE Company = '1' 
       AND Date = '2013-05-06';
Komentarji (3)

To vam je lahko v pomoč -

DELETE FROM dbo.WorkRecord2 
WHERE EmployeeRun IN (
    SELECT e.EmployeeNo
    FROM dbo.Employee e
    WHERE ...
)

Ali pa poskusite to -

DELETE FROM dbo.WorkRecord2 
WHERE EXISTS(
    SELECT 1
    FROM dbo.Employee e
    WHERE EmployeeRun = e.EmployeeNo
        AND ....
)
Komentarji (1)