Heim > Datenbank > MySQL-Tutorial > Wie wählt man effizient unterschiedliche Zeilen basierend auf mehreren Spalten in SQL aus?

Wie wählt man effizient unterschiedliche Zeilen basierend auf mehreren Spalten in SQL aus?

DDD
Freigeben: 2025-01-23 05:56:12
Original
438 Leute haben es durchsucht

How to Efficiently Select Distinct Rows Based on Multiple Columns in SQL?

Effiziente Auswahl eindeutiger Zeilen basierend auf mehreren Spalten

Bei der Arbeit mit Datentabellen ist es oft notwendig, nur eindeutige Zeilen basierend auf bestimmten Bedingungen abzurufen. In diesem Beispiel besteht das Ziel darin, alle Zeilen aus der Tabelle auszuwählen, die eine eindeutige Kombination aus zwei Spalten aufweisen.

Der ursprüngliche Ansatz bestand darin, eine Kombination aus DISTINCT- und IN-Klauseln zu verwenden, um eindeutige Zeilen zu identifizieren:

<code class="language-sql">UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
             FROM sales
             HAVING count = 1)</code>
Nach dem Login kopieren

Eine effizientere und zuverlässigere Methode ist jedoch die Verwendung der GROUP BY-Klausel:

<code class="language-sql">SELECT DISTINCT a,b,c FROM t</code>
Nach dem Login kopieren

Dies entspricht:

<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>
Nach dem Login kopieren
Die

GROUP BY-Klausel gruppiert Zeilen nach angegebenen Spalten (in diesem Fall saleprice und saledate) und eliminiert doppelte Zeilen. Die folgende Abfrage führt zum gewünschten Ergebnis:

<code class="language-sql">UPDATE sales
SET status='ACTIVE'
WHERE id IN
(
    SELECT id
    FROM sales S
    INNER JOIN
    (
        SELECT saleprice, saledate
        FROM sales
        GROUP BY saleprice, saledate
        HAVING COUNT(*) = 1 
    ) T
    ON S.saleprice=T.saleprice AND s.saledate=T.saledate
 )</code>
Nach dem Login kopieren

Diese Abfrage identifiziert eindeutige Verkaufszeilen basierend auf saleprice und saledate und aktualisiert ihren Status auf „AKTIV“. Die Unterabfrage verwendet die Klauseln GROUP BY und HAVING, um eindeutige Kombinationen von saleprice und saledate auszuwählen.

Das obige ist der detaillierte Inhalt vonWie wählt man effizient unterschiedliche Zeilen basierend auf mehreren Spalten in SQL aus?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage