Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Duplikat auswählen und das älteste behalten (nicht basierend auf der ID)

Basierend auf Ihren Beispieldaten und -ergebnissen ein GROUP BY gibt Ihnen die gewünschten Ergebnisse:

SELECT
  domain,
  MIN(creationdate) AS creationdate,
  value1,
  value2
FROM mytable
GROUP BY domain, value1, value2

Nachtrag :@Arka hat aktualisierte Beispieldaten bereitgestellt, bei denen der value 1 und value 2 Spalten haben unterschiedliche Werte (im Original waren sie gleich). Das ändert die Abfrage wie folgt:

SELECT domain, creationdate, value1, value2
FROM mytable
WHERE (domain, creationdate) IN (
  SELECT domain, MIN(creationdate)
  FROM mytable
  GROUP BY domain)

Die Unterabfrage erhält eine Liste mit dem frühesten creationdate für jede domain , und die äußere Abfrage wählt nur Zeilen aus, in denen domain und creationdate mit den Werten der Unterabfrage übereinstimmen.