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>
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>
Dies entspricht:
<code class="language-sql">SELECT a,b,c FROM t GROUP BY a,b,c</code>
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>
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!