Saya memiliki dua tabel, satu untuk tenggat waktu pekerjaan, satu untuk menggambarkan pekerjaan. Setiap pekerjaan dapat mengambil status dan beberapa status berarti tenggat waktu pekerjaan harus dihapus dari tabel lain.
Saya dapat dengan mudah SELECT
pekerjaan / tenggat waktu yang memenuhi kriteria saya dengan LEFT JOIN
:
SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
( status
milik job
tabel tidak deadline
)
Tetapi ketika saya ingin menghapus baris-baris ini dari deadline
, MySQL melempar kesalahan. Kueri saya adalah:
DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
Kesalahan MySQL tidak mengatakan apa-apa:
Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'LEFT JOIN
job
ON deadline.job_id = job.job_id WHEREstatus
=' szaml 'di baris 1
Bagaimana cara mengubah saya SELECT
menjadi DELETE
kueri yang berfungsi ?
sumber
DELETE
danFROM
, tetapi kueri tetap berjalan baik ketika saya menekan Go.Jika Anda menggunakan "tabel sebagai", maka tentukan itu untuk dihapus.
Dalam contoh ini saya menghapus semua baris table_1 yang tidak ada di table_2.
sumber
Saya tidak yakin apakah permintaan semacam itu berfungsi di MySQL, tetapi cobalah. Saya berasumsi Anda memiliki kolom ID di tabel tenggat waktu Anda.
sumber
DELETE
harus dilakukan agar permintaan tidak ambigu. MenggunakanIn
dengan subqueries membuat semuanya jauh lebih lambat. Sebaiknya dihindari.DELETE
danFROM
.Coba ini:
sumber
MySQL memungkinkan Anda untuk menggunakan klausa INNER JOIN dalam pernyataan DELETE untuk menghapus baris dari tabel dan baris yang cocok di tabel lain.
Misalnya, untuk menghapus baris dari tabel T1 dan T2 yang memenuhi kondisi tertentu, Anda menggunakan pernyataan berikut:
Perhatikan bahwa Anda meletakkan nama tabel T1 dan T2 antara kata kunci DELETE dan FROM. Jika Anda menghilangkan tabel T1, pernyataan DELETE hanya menghapus baris dalam tabel T2. Demikian pula, jika Anda menghapus tabel 2, pernyataan DELETE hanya akan menghapus baris dalam tabel T1.
Semoga bantuan ini.
sumber