Heim >Datenbank >MySQL-Tutorial >Wie entferne ich doppelte E-Mails, während andere Spaltenduplikate in SQL erhalten bleiben?
E-Mail-Duplikate in SQL-Abfrage mit DISTINCT eliminieren
In der bereitgestellten SQL-Abfrage möchten Sie sie so ändern, dass eindeutige E-Mail-Einträge zurückgegeben und gleichzeitig zugelassen werden Duplikate in anderen Spalten. Da DISTINCT und GROUP BY ganze Zeilen betreffen, ist ein anderer Ansatz erforderlich, um dieses Ziel zu erreichen.
Die Lösung liegt in der Einbindung einer Unterabfrage, die die Funktion ROW_NUMBER() von SQL Server nutzt. Durch die Partitionierung des Datensatzes nach E-Mail und die Sortierung nach absteigender ID mithilfe der Funktion ROW_NUMBER() können wir jeder Zeile innerhalb jeder E-Mail-Gruppe einen eindeutigen Rang zuweisen.
Die Hauptabfrage wählt dann alle Zeilen aus, in denen die Der Rangwert (rn) ist gleich 1, wodurch sichergestellt wird, dass nur eine Zeile für jede einzelne E-Mail in den Ergebnissen enthalten ist.
Hier ist die Änderung Abfrage:
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 eliminiert effektiv doppelte E-Mails, während Duplikate in anderen Spalten erhalten bleiben. Sie können die Abfrage weiter verfeinern, indem Sie der Unterabfrage bedingte Filter hinzufügen, wie in diesem Beispiel gezeigt:
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
Diese modifizierte Abfrage beschränkt die Ergebnisse auf Produkte mit einem ProductModel von 2 und Namen, die mit „CYBER%“ beginnen. ', wobei die nicht doppelten E-Mail-Einträge innerhalb dieser Kriterien beibehalten werden.
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte E-Mails, während andere Spaltenduplikate in SQL erhalten bleiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!