Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona duplicato e mantieni il più vecchio (non basato sull'ID)

Sulla base dei dati e dei risultati del campione, un GROUP BY ti darà i risultati che cerchi:

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

Appendice :@Arka ha fornito dati di esempio aggiornati in cui il value 1 e value 2 le colonne hanno valori diversi (nell'originale erano gli stessi). Questo cambia la query in questo:

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

La sottoquery ottiene un elenco dei primi creationdate per ogni domain e la query esterna seleziona solo le righe in cui il domain e creationdate corrisponde ai valori della sottoquery.