Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczasz lewe sprzężenie do zwrócenia jednego wyniku?

Błąd jest jasny — wystarczy utworzyć alias dla podzapytania po jego zamykającym ) i użyj go w swoim ON klauzula, ponieważ każda tabela, pochodna lub rzeczywista, musi mieć swój własny identyfikator. Następnie musisz dołączyć movie_id na liście wyboru podzapytania, aby móc do niego dołączyć. Ponieważ podzapytanie zawiera już WHERE popularity = 0 , nie musisz uwzględniać go w ON złączenia klauzula.

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

Jeśli używasz jednej z tych kolumn w zewnętrznym SELECT , odwołaj się do niego przez the_alias.movie_name na przykład.

Zaktualizuj po lepszym zrozumieniu wymagań:

Aby dołączyć do jednej grupy z każdej grupy, możesz użyć agregacji MAX() lub MIN() w movie_id i pogrupuj go w podzapytaniu. Brak podzapytania LIMIT jest wtedy konieczne -- otrzymasz pierwszy movie_id na nazwę za pomocąMIN() lub ostatni z 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zrzucić tylko określone tabele z MySQL?

  2. Apache PHP ulega awarii podczas wykonywania PROCEDURY PRZECHOWYWANEJ

  3. Mysql:Jak wysłać zapytanie do kolumny, której typ jest bitowy?

  4. Nie można utworzyć modelu danych encji — przy użyciu MySql i EF6

  5. Jak uzyskać rekordy zawierające znaki alfanumeryczne + spacje?