Heim >Datenbank >MySQL-Tutorial >Wie funktionieren Self-Joins in MySQL, um Zeilen aus derselben Tabelle zu vergleichen?

Wie funktionieren Self-Joins in MySQL, um Zeilen aus derselben Tabelle zu vergleichen?

DDD
DDDOriginal
2024-11-19 00:22:02785Durchsuche

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

Wie funktioniert ein MySQL-Self-Join?

Ein Self-Join in MySQL beinhaltet das Verbinden zweier Instanzen derselben Tabelle, normalerweise mit verschiedene Aliase. Es ermöglicht Ihnen, Zeilen derselben Tabelle anhand bestimmter Kriterien zu vergleichen.

Die Abfrage erklärt

Lassen Sie uns die gegebene Abfrage aufschlüsseln:

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-Klausel

Dies gibt an, welche Tabellen verknüpft werden sollen:

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

Die gleiche Tabelle, mm_eventlist_dates, wird zweimal verwendet und als Alias ​​für event1 und event2 verwendet.

ON-Klausel

Dies verbindet die beiden Instanzen der Tabelle basierend auf einer Bedingung:

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

Es werden Zeilen in Ereignis2 gefunden, in denen das Startdatum mit dem übereinstimmt Tag nach dem Enddatum der entsprechenden Zeile in Ereignis1.

WHERE-Klausel

Dies filtert die Ergebnisse basierend auf der angegebenen Bedingung:

WHERE event1.id=$id

Es wählt Zeilen aus Ereignis1 aus, in denen die ID mit der angegebenen Variablen $id übereinstimmt.

SELECT-Klausel

Dadurch werden die gewünschten Felder aus den verbundenen Zeilen ausgewählt:

SELECT event2.id, event2.startdate, event2.price

Es ruft die ID, das Startdatum und den Preis von der Instanz „event2“ ab, die die Informationen zu Ereignissen enthält, die einen Tag nach dem angegebenen Ereignis (event1) folgen.

Visuelle Demonstration

Stellen Sie sich vor, Sie haben die folgenden Datensätze in der Tabelle 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

Mit der angegebenen Abfrage:

  • Es wird Ereignis1 mit einer ID gleich $id abgerufen (z. B. 1).
  • Es berechnet das Enddatum plus einen Tag (02.03.2023).
  • Es durchsucht Ereignis2 nach Zeilen mit demselben Startdatum (02.03.2023). ).
  • Es gibt die ID, das Startdatum und den Preis der passenden Zeile „event2“ zurück.

Dies zeigt, wie Sie mit einem MySQL-Self-Join verwandte Zeilen anhand der angegebenen Werte identifizieren können Kriterien, auch innerhalb derselben Tabelle.

Das obige ist der detaillierte Inhalt vonWie funktionieren Self-Joins in MySQL, um Zeilen aus derselben Tabelle zu vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn