Maison > Questions et réponses > le corps du texte
P粉1186987402023-08-19 00:06:31
Oui, ce sera le cas table2
上的连接改为left join
会实现您想要的效果。属于列表和table3
的table1
中的行都将被删除,无论它们是否也存在于table2
. Dans le même temps, les éventuelles lignes correspondantes seront également supprimées.
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 (?, ?, ?, ?);
Je recommande que s'il y a un index sur 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)