Mit subselect zu erreichen LEFT JOIN
-
20-09-2019 - |
Frage
Ist es möglich, das Äquivalent eines LEFT JOIN mit subselect zu erreichen, wo mehrere Spalten erforderlich. Hier ist, was ich meine.
SELECT m.*, (SELECT * FROM model WHERE id = m.id LIMIT 1) AS models FROM make m
Wie es jetzt steht dies zu tun gibt mir ein ‚Operand 1 Spalte enthalten sollte (n)‘ Fehler.
Ja, ich weiß, das ist möglich mit LEFT JOIN, aber ich wurde gesagt, ist es möglich, mit subselect ich bin gespannt, wie es gemacht wird.
Lösung
Ein subselect kann nur eine Spalte von ihm zurückgegeben haben, so dass Sie ein subselect für jede Spalte benötigen würden, dass Sie aus dem Modelltabelle zurückgegeben werden sollen würden.
Andere Tipps
Es gibt viele praktische Anwendungen für das, was Sie vorschlagen.
Diese hypothetische Abfrage zurückkehren würde den jüngsten release_date
(erfundenes Beispiel) für alle Marken mit mindestens einem release_date
und null für alle Marken ohne 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