En utilisant subselect pour accomplir LEFT JOIN
-
20-09-2019 - |
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.
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