Padam daripada berbilang jadual dalam satu kenyataan
P粉716228245
2023-08-18 10:28:49
<p>Menggunakan MySQL, saya cuba memadamkan berbilang rekod daripada berbilang jadual sekaligus.
Pada mulanya saya fikir saya boleh melakukan ini: </p>
<pre class="brush:php;toolbar:false;">PADAM t1, t2
DARI jadual1 t1
SERTAI jadual2 t2 PADA t1.id = t2.table1_id
SERTAI jadual3 t3 PADA t1.id = t3.table1_id
DI MANA t1.id DALAM (?,?,?,?);</pre>
<p>Namun, jika tiada rekod sedia ada dalam jadual2, patutkah saya menukar <strong>JOIN</strong> kepada <strong>LEFT JOIN</strong>? Selain itu, jika saya memadamkan hanya dua atau tiga rekod daripada lapan jadual (2x2x2x2x2x2x2x2), adakah ini akan menyebabkan kelewatan? </p>
Ya, akan jadi
table2
上的连接改为left join
会实现您想要的效果。属于列表和table3
的table1
中的行都将被删除,无论它们是否也存在于table2
. Pada masa yang sama, kemungkinan baris yang sepadan juga akan dipadamkan.Saya mengesyorkan bahawa jika terdapat indeks pada
table3
上的join
重写为exists
条件。这样可以更明确地表达查询的意图,并且可能性能更好,特别是如果在table3(table1_id)
: