MySQL の自己結合はどのように機能しますか?
MySQL の自己結合には、同じテーブルの 2 つのインスタンスを結合することが含まれます。通常、さまざまな別名。特定の基準に基づいて同じテーブルの行を比較できます。
クエリの説明
指定されたクエリを分析してみましょう:
SELECT event2.id, event2.startdate, event2.price FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2 ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY) WHERE event1.id=$id
FROM Clause
結合するテーブルを指定します:
FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2
同じテーブル mm_eventlist_dates が 2 回使用され、event1 およびevent2 としてエイリアス化されています。
ON Clause
これにより、2 つのインスタンスが結合されます。条件に基づくテーブルの値:
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
開始日がevent1の対応する行の終了日の翌日と一致するevent2内の行を検索します。
WHERE句
指定された条件に基づいて結果をフィルタリングします:
WHERE event1.id=$id
ID が指定された変数 $id と一致する行をイベント 1 から選択します。
SELECT 句
これは選択します結合された行からの目的のフィールド:
SELECT event2.id, event2.startdate, event2.price
Itイベント 2 インスタンスから ID、開始日、価格を取得します。このインスタンスには、指定されたイベント (event1) から 1 日後までのイベントに関する情報が含まれています。
Visual Demonstration
]mm_eventlist_dates に次のレコードがあると想像してください。テーブル:
event1.id | event1.enddate | event2.id | event2.startdate |
---|---|---|---|
1 | 2023-03-01 | 2 | 2023-03-02 |
3 | 2023-03-03 | 4 | 2023-03-04 |
付き指定されたクエリ:
これは、MySQL 自己結合によってどのようにできるかを示しています。同じテーブル内であっても、指定された基準に基づいて関連する行を識別します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3