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
Freigeben: 2024-11-19 00:22:02
Original
784 Leute haben es durchsucht

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
Nach dem Login kopieren

FROM-Klausel

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

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
Nach dem Login kopieren

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage