Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez le doublon et conservez le plus ancien (non basé sur l'ID)

En fonction de vos données d'échantillon et de vos résultats, un GROUP BY vous donnera les résultats que vous recherchez :

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

Avenant  :@Arka a fourni des exemples de données mis à jour où la value 1 et value 2 les colonnes ont des valeurs différentes (dans l'original, elles étaient identiques). Cela change la requête en ceci :

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

La sous-requête obtient une liste des premières creationdate pour chaque domain , et la requête externe ne sélectionne que les lignes où le domain et creationdate correspondent aux valeurs de la sous-requête.