Usando o subseleção para realizar a junção esquerda
-
20-09-2019 - |
Pergunta
É possível realizar o equivalente a uma junção esquerda com subseleção, onde várias colunas são necessárias. Aqui está o que quero dizer.
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
Como está agora, isso me dá um 'operando deve conter um erro de 1 coluna (s).
Sim, eu sei que isso é possível com a junção à esquerda, mas me disseram que era possível subseletar que estou curioso sobre como isso é feito.
Solução
Um subseleto pode apenas ter uma coluna retornada dela, para que você precise de um subseleto para cada coluna que você deseja retornar da tabela de modelos.
Outras dicas
Existem muitos usos práticos para o que você sugere.
Esta consulta hipotética retornaria a mais recente release_date
(exemplo artificial) para qualquer marca com pelo menos um release_date
, e nulo para qualquer marca sem 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