sql >> Databáze >  >> RDS >> Mysql

Omezit levé spojení na vrácení jednoho výsledku?

Chyba je jasná – stačí vytvořit alias pro poddotaz po jeho uzavření ) a použijte jej ve vašem ON klauzule, protože každá tabulka, odvozená nebo skutečná, musí mít svůj vlastní identifikátor. Poté budete muset zahrnout movie_id ve výběrovém seznamu poddotazu, abyste se k němu mohli připojit. Protože poddotaz již obsahuje WHERE popularity = 0 , nemusíte jej zahrnout do ON spojení doložka.

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

Pokud používáte jeden z těchto sloupců ve vnějším SELECT , odkazujte na něj prostřednictvím the_alias.movie_name například.

Aktualizujte po lepším pochopení požadavku:

Chcete-li získat jednoho pro každou skupinu, ke kterému se můžete připojit, můžete použít souhrnnou hodnotu MAX() nebo MIN() na movie_id a seskupit jej v poddotazu. Žádný dílčí dotaz LIMIT je pak nutné -- obdržíte první movie_id na jméno s MIN() nebo poslední s 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. vložte více polí pomocí smyčky foreach

  2. Jak mohu použít jarní data jpa k dotazu na sloupec jsonb?

  3. Jak nainstalovat a zabezpečit MariaDB na Ubuntu

  4. Občasné selhání připojení ODBC