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:
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!