Heim >Datenbank >MySQL-Tutorial >Wie kann ich aus einer mehrspaltigen SQL-Abfrage nur eindeutige E-Mail-Adressen abrufen?

Wie kann ich aus einer mehrspaltigen SQL-Abfrage nur eindeutige E-Mail-Adressen abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-28 11:37:20796Durchsuche

How Can I Retrieve Only Unique Email Addresses from a Multi-Column SQL Query?

DISTINCT für eine bestimmte Spalte

Bei einer Abfrage, die mehrere Spalten wie ID, E-Mail, Produktname und Produktmodell aus den Produkten abruft Tabelle, wie kann sie so geändert werden, dass nur eindeutige E-Mail-Werte angezeigt werden?

Um dieses Problem zu beheben, bieten SQL Server 2005 und spätere Versionen eine Lösung:

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
        FROM Products
) a
WHERE rn = 1

Diese Abfrage verwendet die Funktion ROW_NUMBER(), um jeder Zeile innerhalb jeder E-Mail-Partition eine Zeilennummer zuzuweisen, sortiert in absteigender Reihenfolge der ID. Die rn-Spalte gibt dann an, welche Zeile in das Endergebnis einbezogen werden soll, da nur diejenigen ausgewählt werden, deren rn gleich 1 ist.

Um die Abfrage weiter zu verfeinern, kann eine WHERE-Klausel hinzugefügt werden, um die Zeilen basierend zu filtern nach bestimmten Kriterien. Um beispielsweise nur Zeilen mit einem bestimmten ProductModel einzuschließen, deren ProductName eine bestimmte Teilzeichenfolge enthält:

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
        FROM Products
    WHERE ProductModel = 2
    AND ProductName LIKE 'CYBER%'
) a
WHERE rn = 1

Das obige ist der detaillierte Inhalt vonWie kann ich aus einer mehrspaltigen SQL-Abfrage nur eindeutige E-Mail-Adressen abrufen?. 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