Rumah > Soal Jawab > teks badan
P粉1186987402023-08-19 00:06:31
Ya, akan jadi table2
上的连接改为left join
会实现您想要的效果。属于列表和table3
的table1
中的行都将被删除,无论它们是否也存在于table2
. Pada masa yang sama, kemungkinan baris yang sepadan juga akan dipadamkan.
delete t1, t2 from table1 t1 left join table2 t2 on t1.id = t2.table1_id inner join table3 t3 on t1.id = t3.table1_id where t1.id in (?, ?, ?, ?);
Saya mengesyorkan bahawa jika terdapat indeks pada table3
上的join
重写为exists
条件。这样可以更明确地表达查询的意图,并且可能性能更好,特别是如果在table3(table1_id)
:
delete t1, t2 from table1 t1 left join table2 t2 on t1.id = t2.table1_id where t1.id in (?, ?, ?, ?) and exists (select 1 from table3 t3 where t3.table1_id = t1.id)