「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 同じテーブルの行を比較するために MySQL で自己結合はどのように機能しますか?

同じテーブルの行を比較するために MySQL で自己結合はどのように機能しますか?

2024 年 11 月 20 日に公開
ブラウズ:184

How do self-joins work in MySQL to compare rows from the same table?

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.idevent1.enddateevent2.idevent2.startdate
12023-03-0122023-03-02
32023-03-0342023-03-04

付き指定されたクエリ:

  • $id と等しい ID (例: 1) を持つイベント 1 を取得します。
  • 終了日プラス 1 日 (2023-03-02) を計算します。
  • event2 で同じ開始日を持つ行を検索します。 (2023-03-02).
  • 一致するイベント 2 行の ID、開始日、および価格を返します。

これは、MySQL 自己結合によってどのようにできるかを示しています。同じテーブル内であっても、指定された基準に基づいて関連する行を識別します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3