このチュートリアルでは、MySQLの自己結合を使用してテーブルをそれ自体とマージし、カスタマイズされたデータを作成する方法を示します。
基本的な使用法
MySQL自己結合は、テーブルエイリアスを使用して、1つのステートメントで同じテーブルを複数回繰り返さないようにします。
ノート: テーブルエイリアスに慣れていない場合は、概念を完全に説明している他のチュートリアルを検討してください。
自己結合を使用するための一般的な構文は、2つのテーブルを結合する場合の構文と似ています。ただし、テーブルエイリアスを使用します。以下に示すクエリについて考えてみます。
選択する alias1.cols、alias2.cols から tbl1エイリアス1、tbl2エイリアス2 どこ [調子]
ユースケースの例
例を使用して、MySQLの自己結合を実行する方法を理解しましょう。次の情報を含むデータベースがあるとします(以下の完全なクエリを参照)
落とす スキーマ もしも 存在する 自己;作成 スキーマ 自己;
使用する 自己;
作成 テーブル ユーザー((
id INT 主キー 自動増加 、
ファーストネーム VARCHAR ((255)。、
Eメール VARCHAR ((255)。、
Payment_id INT 、
サブスクリプション INT
)。;
入れる の中へ ユーザー((ファーストネーム、Eメール、Payment_id、サブスクリプション)。 値 ((「ヴァレリーG.フィリップ」、 '[メール保護]'、 10001、 1)。、 ((「SeanR.Stories」、 '[メール保護]'、 10005、 2)。、 ((「ボビーS.ニューサム」、 '[メール保護]'、 100010、 5)。;
内側の結合から始めて、最後に左の結合を行います。
内部結合を使用した自己結合
以下のクエリは、上記で作成されたテーブルに対して内部結合を実行します。
選択する al1。* から ユーザーal1 内側 加入 ユーザーal2 オン al1.subscription=al2.subscription 注文者 id DESC ;出力を以下に示します。
左結合を使用した自己結合
以下のクエリ例は、左結合で自己結合を使用する方法を説明しています。
選択する (( CONCAT ((al1.first_name、 '->'、al2.email)。)。 なので 詳細、al1.payment_id から ユーザーal1 左 加入 ユーザーal2 オン al1.id=al2.id;出力結果は次のとおりです。
結論
このガイドでは、MySQL自己結合を使用してテーブルをそれ自体と結合する方法について説明しました。
読んでくれてありがとう。