Подтвердить что ты не робот

Использование subselect для выполнения LEFT JOIN

Можно выполнить эквивалент LEFT JOIN с подзапросом, где требуются несколько столбцов. Вот что я имею в виду.

SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m

Теперь, когда это делается, я получаю сообщение "Операнд должен содержать 1 столбец".

Да, я знаю, что это возможно с LEFT JOIN, но мне сказали, что это возможно с подзапросом, мне любопытно, как это делается.

4b9b3361

Ответ 1

В подзапросе может быть только один столбец, возвращаемый из него, поэтому вам понадобится один подзабор для каждого столбца, который вы хотите вернуть из таблицы модели.

Ответ 2

Существует много практических применений, которые вы предлагаете.

Этот гипотетический запрос вернет самый последний release_date (надуманный пример) для любого make с хотя бы одним release_date и null для любого make без release_date:

SELECT m.make_name, 
       sub.max_release_date
  FROM make m
       LEFT JOIN 
           (SELECT id, 
                   max(release_date) as max_release_date
              FROM make 
           GROUP BY 1) sub
       ON sub.id = m.id