De fout is duidelijk -- je hoeft alleen maar een alias te maken voor de subquery na het sluiten ) en gebruik het in uw ON clausule aangezien elke tabel, afgeleid of reëel, zijn eigen identifier moet hebben. Vervolgens moet u movie_id . opnemen in de selectielijst van de subquery om eraan deel te nemen. Aangezien de subquery al WHERE popularity = 0 . bevat , je hoeft het niet op te nemen in de ON . van de join clausule.
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
Als u een van deze kolommen gebruikt in de buitenste SELECT , verwijs ernaar via the_alias.movie_name bijvoorbeeld.
Update nadat u de vereiste beter hebt begrepen:
Om er één per groep te krijgen om mee te doen, kun je een geaggregeerde MAX() . gebruiken of MIN() op de movie_id en groepeer het in de subquery. Geen subquery LIMIT is dan nodig -- u ontvangt de eerste movie_id per naam metMIN() of de laatste met 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