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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top