Question

Est-il possible d'atteindre l'équivalent d'un LEFT JOIN avec subselect où plusieurs colonnes sont nécessaires. Voici ce que je veux dire.

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

En l'état actuel en ce moment cela me donne un « Opérande doit contenir 1 colonne (s) » erreur.

Oui avec subselect I Je sais que cela est possible avec LEFT JOIN, mais on m'a dit qu'il était possible suis curieux de savoir comment faire.

Était-ce utile?

La solution

Une sous-requête ne peut avoir une colonne en revint, alors vous auriez besoin d'une sous-sélection pour chaque colonne que vous souhaitez renvoyer de la table modèle.

Autres conseils

Il y a beaucoup d'utilisations pratiques pour ce que vous proposez.

Cette requête hypothétique retour le plus récent release_date (exemple pièce) pour tout faire avec au moins un release_date, et nulle pour tout faire sans 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top