sql >> Database >  >> RDS >> Mysql

Een left join beperken tot het retourneren van één resultaat?

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


  1. Updaten en bestellen met ms sql

  2. Verkrijg MySQL-database-uitvoer via PHP naar XML

  3. Hoe kan ik alle rijen opvragen binnen een straal van 5 mijl van mijn coördinaten?

  4. DB-besturing nadert zijn dood