Используя подвыбор для выполнения ОСТАВЛЕННЫЙ СОЕДИНЕНИЕ

Возможно выполнить эквивалент ЛЕВОГО СОЕДИНЕНИЯ с подвыбором, где несколько столбцов требуются. Вот то, что я имею в виду.

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

Как есть теперь выполнение этого дает мне, 'Операнд должен содержать 1 столбец (столбец)' ошибка.

Да я знаю, что это возможно с ЛЕВЫМ СОЕДИНЕНИЕМ, но мне сказали, что это было возможно с подвыбором, мне любопытно относительно того, как это сделано.

14
задан Andre 17 March 2010 в 23:36
поделиться

2 ответа

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

7
ответ дан 1 December 2019 в 08:52
поделиться

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

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

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
24
ответ дан 1 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: