Saya ingin menghapus menggunakan INNER JOIN
di SQL Server 2008 .
Tapi saya mendapatkan kesalahan ini:
Msg 156, Level 15, Status 1, Baris 15
Sintaksis 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'
sql
sql-server
sql-server-2008
inner-join
sql-delete
nettoon493
sumber
sumber
DELETE
dengan bergabungJawaban:
Anda perlu menentukan tabel apa yang Anda hapus, ini adalah versi dengan alias:
sumber
Cukup tambahkan nama tabel di antara
DELETE
danFROM
dari tempat Anda ingin menghapus catatan karena kami harus menentukan tabel yang akan dihapus. Hapus jugaORDER BY
klausa karena tidak ada yang dipesan saat menghapus catatan.Jadi permintaan akhir Anda harus seperti ini:
sumber
DELETE Employee
akan menghapus dari tabel Karyawan bukanWorkRecord2
tabel.Mungkin ini bisa membantu Anda -
Atau coba ini -
sumber
Coba ini:
sumber
Harus:
sumber
Versi ini seharusnya berfungsi
sumber
Di SQL Server Management Studio saya dapat dengan mudah membuat
SELECT
kueri.Saya bisa menjalankannya, dan semua kontak saya ditampilkan.
Sekarang ubah
SELECT
keDELETE
:Semua catatan yang Anda lihat dalam
SELECT
pernyataan akan dihapus.Anda bahkan dapat membuat gabungan batin yang lebih sulit dengan prosedur yang sama, misalnya:
sumber
sumber
Coba kueri ini:
sumber
Cara lain menggunakan
CTE
.Catatan: Kami tidak dapat menggunakan
JOIN
bagian dalamCTE
saat Anda menginginkannyadelete
.sumber
Ini adalah permintaan sederhana untuk menghapus catatan dari dua tabel sekaligus.
sumber
Coba ini, ini mungkin bisa membantu
sumber
Ini adalah versi SQL Server saya
sumber
Anda tidak menentukan tabel untuk
Company
danDate
, Anda mungkin ingin memperbaikinya.SQL standar menggunakan
MERGE
:Jawaban dari @Devart juga merupakan SQL Standar meskipun tidak lengkap, akan terlihat lebih seperti ini:
Hal penting yang perlu diperhatikan tentang hal di atas adalah jelas bahwa penghapusan menargetkan satu tabel, seperti yang diberlakukan pada contoh kedua dengan memerlukan subquery skalar.
Bagi saya berbagai jawaban sintaksis lebih sulit dibaca dan dipahami. Saya kira pola pikir yang paling baik dijelaskan dalam jawaban oleh @frans eilering yaitu orang yang menulis kode tidak selalu peduli dengan orang yang akan membaca dan memelihara kode.
sumber
Inilah yang saat ini saya gunakan untuk menghapus atau bahkan memperbarui:
sumber