ホームページ >データベース >mysql チュートリアル >同じテーブルの行を比較するために MySQL で自己結合はどのように機能しますか?
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 句
これはどのテーブルを指定しますか結合する:
FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2
同じテーブル mm_eventlist_dates が 2 回使用され、event1 およびevent2 としてエイリアス化されています。
ON 句
これは結合しますに基づくテーブルの 2 つのインスタンス条件:
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
開始日がevent1の対応する行の終了日の翌日に一致する行をevent2で検索します。
WHERE句
これは、指定された条件に基づいて結果をフィルタリングします:
WHERE event1.id=$id
It ID が指定された変数 $id と一致する行をevent1から選択します。
SELECT Clause
これにより、結合された行から目的のフィールドが選択されます:
SELECT event2.id, event2.startdate, event2.price
event2 インスタンスから ID、開始日、価格を取得します。これには、指定されたイベントに続くイベントに関する情報が含まれています(event1) 1 日まで。
ビジュアル デモンストレーション
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 |
指定されたquery:
これは、MySQL の自己結合により、同じテーブル内であっても、指定された基準に基づいて関連する行を識別できる方法を示しています。
以上が同じテーブルの行を比較するために MySQL で自己結合はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。