Padamkan baris anak yatim berdasarkan ID yang tidak sepadan
Soalan:
Padam blob
daripada fileid
jadual Tiada baris yang sepadan files
ditemui dalam id
jadual.
Struktur jadual:
<code>files表: | id | .... | |---|---| | 1 | .... | | 2 | .... | | 7 | .... | | 9 | .... | blob表: | fileid | .... | |---|---| | 1 | .... | | 2 | .... | | 3 | .... | | 4 | .... | | 4 | .... | | 4 | .... | | 9 | .... |</code>
Hasil yang dijangkakan:
Padamkan baris dengan blob
s 3 dan 4 dalam jadual fileid
kerana tiada padanan files
dalam jadual fileid
.
Penyelesaian:
1. Gunakan LEFT JOIN/IS NULL:
<code class="language-sql">DELETE b FROM BLOB b LEFT JOIN FILES f ON f.id = b.fileid WHERE f.id IS NULL</code>
2. Penggunaan TIDAK WUJUD:
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL FROM FILES f WHERE f.id = fileid)</code>
3. Gunakan NOT IN:
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f)</code>
Amaran:
Untuk memastikan pemulangan semula sekiranya berlaku ralat, lakukan operasi PADAM dalam transaksi.
Atas ialah kandungan terperinci Bagaimana cara memadam baris anak yatim dalam jadual pangkalan data berdasarkan ID yang tidak dapat ditandingi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!