Heim > Datenbank > MySQL-Tutorial > Wie kann ich mehrere WHERE-Klausel-ähnliche Bedingungen in einer einzigen SQL-Abfrage effizient kombinieren?

Wie kann ich mehrere WHERE-Klausel-ähnliche Bedingungen in einer einzigen SQL-Abfrage effizient kombinieren?

Patricia Arquette
Freigeben: 2025-01-21 12:53:09
Original
213 Leute haben es durchsucht

How Can I Efficiently Combine Multiple WHERE Clause-like Conditions in a Single SQL Query?

Effizienter Datenabruf: Mehrere WHERE-Bedingungen geschickt kombinieren

Angenommen, Sie müssen Daten aus einer Tabelle basierend auf zwei verschiedenen Bedingungen abrufen. Stellen Sie sich beispielsweise eine Tabelle mit dem Namen „Transaktionen“ vor, die Finanztransaktionen aufzeichnet und Spalten wie „Konto-ID“, „Budget-ID“, „Punkte“ und „Typ“ enthält.

Um bestimmte Daten effizient aus dieser Tabelle abzurufen, müssen Sie möglicherweise mehrere WHERE-Klauseln kombinieren. Beispielsweise müssen Sie möglicherweise die Gesamtpunktzahl ermitteln, die für jede eindeutige „budget_id“ in der Tabelle zugewiesen und ausgegeben wird.

Idee abfragen

Die Abfrage, die Sie erstellen müssen, sollte etwa wie folgt aussehen:

<code class="language-sql">SELECT budget_id, 
       SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated,
       SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued
FROM transactions
GROUP BY budget_id</code>
Nach dem Login kopieren

Lassen Sie uns in jede Komponente dieser Abfrage eintauchen, um zu verstehen, wie sie Ihre Ziele erreicht:

SUM(CASE WHEN ... THEN ... ELSE ... END)-Funktion:

Diese Funktion wird verwendet, um die Spalte „Punkte“ basierend auf dem angegebenen „Typ“ bedingt zu summieren. Wenn „Typ“ „Zuordnung“ ist, wird die Summe der „Punkte“ für alle Zeilen berechnet, die diese Bedingung erfüllen. Auf ähnliche Weise wird die Summe der „Punkte“ für Zeilen berechnet, bei denen „Typ“ gleich „Issue“ ist. (Hier wird die IF-Funktion durch eine standardmäßigere CASE WHEN ersetzt, um die Lesbarkeit und Kompatibilität des Codes zu verbessern)

GRUPPE NACH budget_id:

Diese Klausel gruppiert die abgerufenen Daten nach der Spalte „budget_id“. Daher stellt die Abfrage für jede eindeutige „budget_id“ in der Tabelle eine separate Ergebniszeile bereit.

Kombinationen von WHERE-Klauseln:

Die WHERE-Klausel fehlt in dieser Abfrage merklich, da die erforderliche Filterung innerhalb der SUM()-Funktion erfolgt. Insbesondere enthält die Funktion Bedingungen zum selektiven Einschließen von Zeilen basierend auf der Spalte „Typ“.

Erwartete Ausgabe:

Die von Ihnen erstellte Abfrage gibt eine Tabelle mit den Spalten „budget_id“, „allocated“ und „issued“ aus. Die Spalte „zugewiesen“ stellt die Summe der Punkte dar, die der Transaktion „Zuweisung“ jeder „Budget_ID“ zugeordnet sind, und die Spalte „Ausgegeben“ stellt die akkumulierten Punkte der Transaktion „Ausgabe“ der entsprechenden „Budget_ID“ dar.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere WHERE-Klausel-ähnliche Bedingungen in einer einzigen SQL-Abfrage effizient kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage