sql >> Databasteknik >  >> RDS >> Mysql

Begränsa en vänsterkoppling till att returnera ett resultat?

Felet är tydligt -- du behöver bara skapa ett alias för underfrågan efter dess avslutande ) och använd den i din ON sats eftersom varje tabell, härledd eller verklig, måste ha sin egen identifierare. Sedan måste du inkludera movie_id i underfrågans urvalslista för att kunna gå med på den. Eftersom underfrågan redan innehåller WHERE popularity = 0 , du behöver inte inkludera det i anslutningens ON klausul.

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

Om du använder en av dessa kolumner i den yttre SELECT , referera till den via the_alias.movie_name till exempel.

Uppdatera efter att ha förstått kravet bättre:

För att få en per grupp att gå med i kan du använda en sammanlagd MAX() eller MIN()movie_id och gruppera den i underfrågan. Ingen underfråga LIMIT är sedan nödvändigt -- du kommer att få det första movie_id per namn med MIN() eller den sista med 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. Ansluter till Lotus Notes från Java

  2. Det finns problem med att lägga till ett nytt ID (automatisk ökning) efter tabellen

  3. Hur programmerar man en MySQL-utlösare för att infoga rad i en annan tabell?

  4. Slå samman radvärden till en CSV (a.k.a GROUP_CONCAT för SQL Server)