Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einen linken Join auf die Rückgabe eines Ergebnisses beschränken?

Der Fehler ist klar – Sie müssen nur einen Alias ​​für die Unterabfrage nach ihrem schließenden ) erstellen und verwenden Sie es in Ihrem ON -Klausel, da jede abgeleitete oder reelle Tabelle ihren eigenen Bezeichner haben muss. Dann müssen Sie movie_id einfügen in der Auswahlliste der Unterabfrage, um ihr beitreten zu können. Da die Unterabfrage bereits WHERE popularity = 0 enthält , müssen Sie es nicht in ON des Joins einschließen Klausel.

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

Wenn Sie eine dieser Spalten im äußeren SELECT verwenden , verweisen Sie darauf über the_alias.movie_name zum Beispiel.

Aktualisierung nach besserem Verständnis der Anforderung:

Um einen pro Gruppe zum Beitritt zu bekommen, können Sie ein aggregiertes MAX() verwenden oder MIN() auf der movie_id und gruppieren Sie es in der Unterabfrage. Keine Unterabfrage LIMIT ist dann notwendig -- Sie erhalten die erste movie_id pro Name mit MIN() oder die letzte mit 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