sql >> Base de Datos >  >> RDS >> Mysql

Seleccione duplicado y mantenga el más antiguo (no basado en ID)

En función de sus datos y resultados de muestra, un GROUP BY le dará los resultados que busca:

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

Anexo :@Arka proporcionó datos de muestra actualizados donde el value 1 y value 2 las columnas tienen valores diferentes (en el original eran iguales). Eso cambia la consulta a esto:

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

La subconsulta obtiene una lista de los primeros creationdate para cada domain , y la consulta externa solo selecciona filas donde el domain y creationdate hacer coincidir los valores de la subconsulta.