Recuperar solo la primera fila en un LEFT JOIN
En SQL, realizar una operación LEFT JOIN puede generar varias filas de la tabla derecha siendo emparejado con una sola fila de la tabla de la izquierda. En algunos escenarios, es deseable recuperar solo la primera fila de la tabla derecha para cada fila de la tabla izquierda.
Considere la siguiente estructura de datos simplificada:
**Feeds** id | title | content ---------------------- 1 | Feed 1 | ... **Artists** artist_id | artist_name ----------------------- 1 | Artist 1 2 | Artist 2 **feeds_artists** rel_id | artist_id | feed_id ---------------------------- 1 | 1 | 1 2 | 2 | 1
Para recuperar los artículos del feed y asociar solo el primer artista a cada feed, se puede intentar la siguiente sintaxis:
SELECT * FROM feeds LEFT JOIN feeds_artists ON wp_feeds.id = ( SELECT feeds_artists.feed_id FROM feeds_artists WHERE feeds_artists.feed_id = feeds.id LIMIT 1 ) WHERE feeds.id = '13815'
Sin embargo, es posible que este enfoque no produzca los resultados deseados. Para lograr el objetivo, considere la siguiente alternativa:
SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT MIN(fa.artist_id) a_id FROM feeds_artists fa WHERE fa.feed_id = f.id )
Esta modificación utiliza la función MIN() para determinar el artista con el ID más bajo, asumiendo que los ID de artista aumentan con el tiempo. Como resultado, LEFT JOIN solo recuperará el primer artista asociado con cada feed.
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