L'errore è evidente:devi solo creare un alias per la sottoquery dopo la sua chiusura ) e usalo nel tuo ON clausola poiché ogni tabella, derivata o reale, deve avere il proprio identificatore. Quindi, dovrai includere movie_id nell'elenco di selezione della sottoquery per potervi partecipare. Poiché la sottoquery include già WHERE popularity = 0 , non è necessario includerlo nel ON del join clausola.
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
Se stai utilizzando una di queste colonne nel SELECT esterno , referenzialo tramite the_alias.movie_name per esempio.
Aggiorna dopo aver compreso meglio il requisito:
Per ottenerne uno per gruppo a cui partecipare, puoi utilizzare un aggregato MAX() o MIN() sul movie_id e raggruppalo nella sottoquery. Nessuna sottoquery LIMIT è quindi necessario -- riceverai il primo movie_id per nome con MIN() o l'ultimo 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