logo

MySQLの削除結合

DELETE クエリは、テーブルから行を削除するために使用されるデータ操作言語のサブパートです。参加を削除する方法 MySQL 面接中によく聞かれる質問です。 MySQL で削除結合ステートメントを使用するプロセスは簡単ではありません。このセクションでは、DELETE クエリで INNER JOIN または LEFT JOIN を使用して複数のテーブルからレコードを削除する方法について説明します。

内部結合を使用した結合の削除

内部結合クエリを削除クエリと併用すると、一方のテーブルから行を削除し、指定された条件を満たすもう一方のテーブルから一致する行を削除できます。

構文

以下は、 Inner Join を使用して複数のテーブルから行を削除するために使用できる構文です。

 DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition 

ここでは、指定した条件に一致して行を削除したいテーブル名を対象とします。テーブルから行を削除するとします。 T1 そして T2 どこ 学生ID = 2 の場合、次のステートメントとして記述できます。

ラテックス製のテーブル
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

上記の構文では、ターゲット テーブル (T1 と T2) が DELETE キーワードと FROM キーワードの間に書き込まれます。そこからテーブル名を省略すると、 ステートメントの削除 単一のテーブルから行のみを削除します。で書かれた式は、 の上 キーワードは、削除するテーブルの行に一致する条件です。

2 つのテーブルがあるとします。 学生 そして 連絡先 これには次のデータが含まれます。

表:学生

MySQLの削除結合

表: 連絡先

MySQLの削除結合

内容を理解するには、次のクエリを実行します。 結合の削除 内部結合を使用します。このステートメントは、両方のテーブルで同じ ID を持つ行を削除します。

 DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4; 

実行が成功すると、次のメッセージが表示されます。

MySQLの削除結合

次に、次のクエリを実行して、行が正常に削除されたことを確認します。

 mysql> SELECT * FROM students; mysql> SELECT * FROM contacts; 

行が 学生ID=4 が削除されます。

MySQLの削除結合 MySQLの削除結合

左結合を使用した結合の削除

左側 (最初の) テーブルからすべての行と、別のテーブルから一致する行または一致しない行を返す SELECT ステートメントを使用した LEFT JOIN 句についてはすでに学習しました。同様に、LEFT JOIN 句を DELETE キーワードとともに使用して、右側 (2 番目) のテーブルから一致する行がない左側 (最初の) テーブルから行を削除することもできます。

次のクエリは、DELETE ステートメントが行を削除するために LEFT JOIN を使用する場所をより明確に説明しています。 表1 に一致する行がありません 表2 :

Javaのインデックス
 DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL; 

上記のクエリでは、INNER JOIN ステートメントのように両方を使用するのではなく、DELETE キーワードとともに Table1 のみを使用することに注意してください。

テーブルを作成しましょう ' 連絡先 ' そして ' 顧客 ' 次のデータを含むデータベース内にあります:

表: 連絡先

Pythonは数値です
MySQLの削除結合

表: 顧客

MySQLの削除結合

次のステートメントを実行して、 携帯電話 番号:

 DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL; 

実行が成功すると、次のメッセージが表示されます。

MySQLの削除結合

次に、次のクエリを実行して、行が正常に削除されたことを確認します。

 mysql> SELECT * FROM customers; 

顧客が携帯電話番号を持たない行が削除されていることがわかります。

MySQLの削除結合