Mysql
 sql >> база данни >  >> RDS >> Mysql

Ограничаване на ляво присъединяване до връщане на един резултат?

Грешката е ясна - просто трябва да създадете псевдоним за подзаявката след нейното затваряне ) и го използвайте във вашия ON клауза, тъй като всяка таблица, извлечена или реална, трябва да има свой собствен идентификатор. След това ще трябва да включите movie_id в списъка за избор на подзаявката, за да можете да се присъедините към нея. Тъй като подзаявката вече включва WHERE popularity = 0 , не е необходимо да го включвате в ON на присъединяването клауза.

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

Ако използвате една от тези колони във външния SELECT , препратете към него чрез the_alias.movie_name например.

Актуализация, след като разберете по-добре изискването:

За да получите по един на група, срещу която да се присъедините, можете да използвате обобщен MAX() или MIN() на movie_id и го групирайте в подзаявката. Няма подзаявка LIMIT тогава е необходимо - ще получите първия movie_id на име сMIN() или последният с 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. PHP - Създаване на квадратче за отметка, като използвате записите от базата данни на MySQL като стойности

  2. Прехвърляне на int към varchar

  3. Не мога да намеря FULLTEXT индекс, съответстващ на списъка с колони (индексите са зададени)

  4. Как да импортирате XML файл в таблицата на базата данни MySQL с помощта на XML_LOAD(); функция

  5. Как да вмъкна няколко реда в mysql база данни наведнъж с подготвени изрази?