„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 20.11.2024
Durchsuche:773

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 event2 gefunden, in denen das Startdatum mit dem Tag nach dem Enddatum von übereinstimmt die entsprechende Zeile in event1.

WHERE-Klausel

Dies filtert die Ergebnisse basierend auf der angegebenen Bedingung:

WHERE event1.id=$id

Wählt Zeilen aus Ereignis1 aus, deren ID mit der angegebenen Variablen $id übereinstimmt.

SELECT-Klausel

Wählt die gewünschten Felder aus den verbundenen Zeilen aus :

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

Es ruft die ID, das Startdatum und den Preis von der event2-Instanz ab, die die Informationen über Ereignisse enthält, die auf das angegebene Ereignis folgen (Ereignis1) um einen Tag.

Visuelle Demonstration

Stellen Sie sich vor, Sie haben die folgenden Datensätze in der Tabelle mm_eventlist_dates:

event1.idevent1.enddateevent2.idevent2.startdate
12023-03-0122023-03-02
3 2023-03-0342023-03-04

Mit der angegebenen Abfrage:

  • Es ruft Ereignis1 mit einer ID gleich $id ab (z. B. 1).
  • Es berechnet das Enddatum plus einen Tag (02.03.2023).
  • Es durchsucht Ereignis2 nach Zeilen mit dem gleichen Startdatum (02.03.2023).
  • Es gibt die ID, das Startdatum und den Preis der passenden Ereignis2-Zeile zurück.

Dies zeigt, wie ein MySQL-Selbst -join ermöglicht es Ihnen, verwandte Zeilen anhand bestimmter Kriterien zu identifizieren, sogar innerhalb derselben Tabelle.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3