sql >> Base de Datos >  >> RDS >> Mysql

¿Limitar una combinación izquierda para devolver un resultado?

El error es claro:solo necesita crear un alias para la subconsulta después de cerrar ) y úsalo en tu ON ya que cada tabla, derivada o real, debe tener su propio identificador. Luego, deberá incluir movie_id en la lista de selección de la subconsulta para poder unirse a ella. Dado que la subconsulta ya incluye WHERE popularity = 0 , no necesita incluirlo en el ON de la unión cláusula.

LEFT JOIN (
  SELECT
    movie_id, 
    movie_name 
  FROM movies 
  WHERE popularity = 0
  ORDER BY movie_name
  LIMIT 1
) the_alias ON t1.movie_id = the_alias.movie_id

Si está utilizando una de estas columnas en el exterior SELECT , haga referencia a él a través de the_alias.movie_name por ejemplo.

Actualización después de comprender mejor el requisito:

Para obtener uno por grupo al que unirse, puede usar un MAX() agregado o MIN() en el movie_id y agrúpelo en la subconsulta. Sin subconsulta LIMIT entonces es necesario:recibirá el primer movie_id por nombre con MIN() o el último con MAX() .

LEFT JOIN (
  SELECT
    movie_name,
    MIN(movie_id) AS movie_id
  FROM movies
  WHERE popularity = 0
  GROUP BY movie_name
) the_alias ON t1.movie_id = the_alias.movie_id