"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo funcionan las autouniones en MySQL para comparar filas de la misma tabla?

¿Cómo funcionan las autouniones en MySQL para comparar filas de la misma tabla?

Publicado el 2024-11-20
Navegar:573

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

¿Cómo funciona una autounión de MySQL?

Una autounión en MySQL implica unir dos instancias de la misma tabla, normalmente con diferentes alias. Le permite comparar filas de la misma tabla según criterios específicos.

La consulta explicada

Desglosemos la consulta dada:

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 Cláusula

Esto especifica a qué tablas unirse:

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

La misma tabla, mm_eventlist_dates, se usa dos veces y tiene el alias de evento1 y evento2.

Cláusula ON

Esto une las dos instancias de la tabla según una condición:

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

Encuentra filas en el evento2 donde la fecha de inicio coincide con el día posterior a la fecha de finalización de la fila correspondiente en el evento1.

Cláusula WHERE

Esto filtra los resultados según la condición especificada:

WHERE event1.id=$id

Selecciona filas del evento1 donde el id coincide con la variable dada, $id.

Cláusula SELECT

Esto selecciona los campos deseados de las filas unidas:

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

Recupera el ID, la fecha de inicio y el precio de la instancia event2, que contiene la información sobre los eventos posteriores al evento especificado (event1) por un día.

Demostración visual

Imagine que tiene los siguientes registros en mm_eventlist_dates tabla:

evento1.idevento1.fecha de finalizaciónevento2.idevento2.fecha de inicio
12023-03-0122023-03-02
32023-03-0342023-03-04

Con la consulta dada:

  • Recupera el evento1 con id igual a $id (por ejemplo, 1).
  • Calcula la fecha de finalización más un día (2023-03-02).
  • Busca en el evento2 filas con la misma fecha de inicio (2023-03-02).
  • Devuelve el ID, inicio fecha y precio de la fila correspondiente del evento 2.

Esto demuestra cómo una autounión de MySQL le permite identificar filas relacionadas según criterios específicos, incluso dentro de la misma tabla.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3