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

StackOverflow https://stackoverflow.com/questions/2466685

  •  20-09-2019
  •  | 
  •  

Вопрос

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

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

В нынешнем виде это дает мне ошибку «Операнд должен содержать 1 столбец (столбцы)».

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

Это было полезно?

Решение

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

Другие советы

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

Этот гипотетический запрос вернет самые последние release_date (надуманный пример) для любой марки, имеющей хотя бы один release_date, и null для любой марки без 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top