Heim  >  Artikel  >  Datenbank  >  Wie wähle ich in MySQL mehrere Spalten aus einer einzelnen Unterabfrage aus?

Wie wähle ich in MySQL mehrere Spalten aus einer einzelnen Unterabfrage aus?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 22:43:02309Durchsuche

How to Select Multiple Columns from a Single Subquery in MySQL?

Auswählen mehrerer Spalten aus einer einzelnen Unterabfrage in MySQL

Problem

Beim Umgang mit mehreren Tabellen kann es vorkommen, dass mehrere Spalten ausgewählt werden müssen eine Unterabfrage. Einfache Verknüpfungen führen jedoch möglicherweise nicht zum gewünschten Ergebnis, wenn in der Untertabelle Datensätze fehlen.

Lösung

Der Schlüssel zur Lösung dieses Problems liegt im Verständnis, dass Tabellen von beiden physischen Tabellen abgeleitet werden können und Unterabfragen. Durch die Nutzung dieses Konzepts wird es möglich, mehrere Spalten aus einer einzelnen Unterabfrage abzurufen.

Betrachten Sie das folgende Beispiel:

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
  SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
  FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

In diesem Beispiel generiert die Unterabfrage eine virtuelle Tabelle b, die enthält die gewünschten Spalten. Indem wir diese virtuelle Tabelle mit der Haupttabelle a verbinden, können wir alle erforderlichen Daten in einer einzigen Abfrage abrufen.

Erweitern der Technik

Diese Technik kann weiter erweitert werden, um Zusammenfassungs- oder Gruppierungstabellen einzubeziehen . Die folgende Abfrage generiert beispielsweise eine virtuelle Tabelle c mit der Anzahl der Übersetzungen für jedes Attribut:

SELECT a.attr, b.id, b.trans, b.lang, c.langcount
FROM attribute a
JOIN (
  SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
  FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)
JOIN (
  SELECT count(*) AS langcount,  at.attribute
  FROM attributeTranslation at
  GROUP BY at.attribute
) c ON (a.id = c.attribute)

Diese Abfrage gibt die gewünschten Spalten zusammen mit der Anzahl der Übersetzungen für jedes Attribut zurück.

Leistungsüberlegungen

Obwohl diese Technik Flexibilität bietet, sollte die Leistung berücksichtigt werden. MySQL-Optimierer sind in der Lage, ähnliche Unterabfragen zusammenzuführen. Es wird jedoch empfohlen, eine übermäßige Verwendung von Unterabfragen zu vermeiden und Abfragen auf Effizienz zu optimieren. Das Zusammenführen mehrerer Tabellen kann in manchen Szenarien eine effizientere Option sein.

Das obige ist der detaillierte Inhalt vonWie wähle ich in MySQL mehrere Spalten aus einer einzelnen Unterabfrage aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn