Frage Wie lösche ich mit INNER JOIN mit SQL Server?


Ich möchte mit löschen INNER JOIN im SQL Server 2008.

Aber ich bekomme diesen Fehler:

Msg 156, Ebene 15, Zustand 1, Zeile 15
  Falsche Syntax neben dem Schlüsselwort 'INNER'.

Mein Code:

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

882
2018-05-10 11:38


Ursprung


Antworten:


Sie müssen angeben, aus welcher Tabelle Sie löschen möchten, hier ist eine Version mit einem Alias:

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

1576
2018-05-10 11:43



Fügen Sie einfach den Namen der Tabelle hinzu DELETE und FROM von wo Sie Datensätze löschen möchten, weil wir die zu löschende Tabelle angeben müssen. Auch entfernen ORDER BY Klausel, weil beim Löschen von Datensätzen nichts zu bestellen ist.

Ihre letzte Abfrage sollte also so aussehen:

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

100
2018-05-10 12:07



Versuche dies:

DELETE FROM WorkRecord2 
       FROM Employee 
Where EmployeeRun=EmployeeNo
      And Company = '1' 
      AND Date = '2013-05-06'

26
2018-05-10 17:37



Möglicherweise ist dies hilfreich für Sie -

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

Oder versuche das -

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

21
2018-05-10 12:12



Es sollte sein:

DELETE zpost 
FROM zpost 
INNER JOIN zcomment ON (zpost.zpostid = zcomment.zpostid)
WHERE zcomment.icomment = "first"       

11
2017-08-17 08:15



Diese Version sollte funktionieren

DELETE WorkRecord2
FROM WorkRecord2 
INNER JOIN Employee ON EmployeeRun=EmployeeNo
Where Company = '1' AND Date = '2013-05-06'

8
2017-08-12 19:56



Versuchen Sie diese Abfrage:

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

8
2017-07-16 10:16



In SQL Server Management Studio kann ich einfach eine SELECT-Abfrage erstellen.

SELECT Contact.Naam_Contactpersoon, Bedrijf.BedrijfsNaam, Bedrijf.Adres, Bedrijf.Postcode
FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

Ich kann es ausführen, und alle meine Kontakte werden gezeigt.

Ändern Sie nun SELECT in DELETE:

DELETE Contact
FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf

Alle Datensätze, die Sie in der SELECT-Anweisung gesehen haben, werden entfernt.

Sie können sogar einen schwierigeren inneren Join mit derselben Prozedur erstellen, zum Beispiel:

DELETE FROM Contact
INNER JOIN Bedrijf ON Bedrijf.IDBedrijf = Contact.IDbedrijf
INNER JOIN LoginBedrijf ON Bedrijf.IDLoginBedrijf = LoginBedrijf.IDLoginBedrijf

6
2018-06-01 21:08



 DELETE a FROM WorkRecord2 a 
       INNER JOIN Employee b 
       ON a.EmployeeRun = b.EmployeeNo 
       Where a.Company = '1' 
       AND a.Date = '2013-05-06'

4
2018-04-28 16:00