検索

ホームページ  >  に質問  >  本文

1 つのステートメントで複数のテーブルから削除

<p>MySQL を使用して、複数のテーブルから複数のレコードを一度に削除しようとしています。 最初はこれができると思いました: </p> <pre class="brush:php;toolbar:false;">t1、t2 を削除 FROM テーブル 1 t1 JOIN table2 t2 ON t1.id = t2.table1_id JOIN table3 t3 ON t1.id = t3.table1_id WHERE t1.id IN (?,?,?,?); <p>ただし、table2 に既存のレコードがない場合、<strong>JOIN</strong> を <strong>LEFT JOIN</strong> に変更する必要がありますか?また、8 つのテーブル (2x2x2x2x2x2x2x2) から 2 つまたは 3 つのレコードだけを削除すると、遅延が発生しますか? </p>
P粉716228245P粉716228245497日前553

全員に返信(1)返信します

  • P粉118698740

    P粉1186987402023-08-19 00:06:31

    はい、table2 の結合を left join に変更すると、希望の効果が得られます。リストに属する table1 および table3 内の行は、table2 にも存在するかどうかに関係なく、削除されます。同時に、一致する可能性のある行も削除されます。

    リーリー

    table3joinexists 条件に書き換えることをお勧めします。これにより、特に table3(table1_id):

    にインデックスがある場合、クエリの意図がより明確になり、パフォーマンスが向上する可能性があります。 リーリー

    返事
    0
  • キャンセル返事