Pertanyaan Bagaimana cara Hapus menggunakan INNER JOIN dengan SQL Server?


Saya ingin menghapus menggunakan INNER JOIN di SQL Server 2008.

Tetapi saya mendapatkan kesalahan ini:

Msg 156, Level 15, Negara 1, Jalur 15
  Sintaks yang salah di dekat kata kunci 'INNER'.

Kode saya:

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

882
2018-05-10 11:38


asal


Jawaban:


Anda perlu menentukan tabel apa yang Anda hapus, di sini adalah versi dengan 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



Tambahkan saja nama tabel di antara DELETE dan FROM dari tempat Anda ingin menghapus rekaman karena kami harus menentukan tabel untuk dihapus. Hapus juga ORDER BY klausa karena tidak ada yang perlu dipesan saat menghapus rekaman.

Jadi, permintaan terakhir Anda harus seperti ini:

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

100
2018-05-10 12:07



Coba ini:

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

26
2018-05-10 17:37



Mungkin ini bermanfaat untuk Anda -

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

Atau coba ini -

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

21
2018-05-10 12:12



Harus:

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

11
2017-08-17 08:15



Versi ini seharusnya berfungsi

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

8
2017-08-12 19:56



Coba kueri ini:

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



Dalam SQL Server Management Studio saya dapat dengan mudah membuat query SELECT.

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

Saya bisa menjalankannya, dan semua kontak saya ditampilkan.

Sekarang ubah SELECT menjadi HAPUS:

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

Semua catatan yang Anda lihat dalam pernyataan SELECT akan dihapus.

Anda bahkan dapat membuat bagian dalam yang lebih sulit untuk bergabung dengan prosedur yang sama, misalnya:

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