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