sql >> Database teknologi >  >> RDS >> Mysql

Begræns en venstre joinforbindelse til at returnere ét resultat?

Fejlen er tydelig -- du skal bare oprette et alias for underforespørgslen efter dens afsluttende ) og brug den i din ON klausul, da hver tabel, afledt eller reel, skal have sin egen identifikator. Derefter skal du inkludere movie_id i underforespørgslens valgliste for at kunne deltage på den. Da underforespørgslen allerede inkluderer WHERE popularity = 0 , behøver du ikke inkludere det i joinforbindelsens 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

Hvis du bruger en af ​​disse kolonner i den ydre SELECT , referer til den via the_alias.movie_name for eksempel.

Opdater efter at have forstået kravet bedre:

For at få én pr. gruppe at deltage i, kan du bruge en samlet MAX() eller MIN()movie_id og grupper det i underforespørgslen. Ingen underforespørgsel LIMIT er så nødvendigt -- du vil modtage det første movie_id navn med MIN() eller den sidste 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. Spring's Stored Procedure - resultater, der kommer tilbage fra proceduren, er altid tomme

  2. Jeg vil indsætte data i mysql-databasen ved hjælp af PDO fra PHP. Men dataene er ikke indsat

  3. Flere docker-containere til mysql eller én instans med flere databaser

  4. Python:ValueError:ikke-understøttet formattegn ''' (0x27) ved indeks 1