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.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top