sql >> Database >  >> RDS >> Mysql

Selecteer duplicaat en bewaar de oudste (niet op basis van ID)

Op basis van uw voorbeeldgegevens en resultaten, een GROUP BY geeft u de resultaten die u zoekt:

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

Aanvulling :@Arka heeft bijgewerkte voorbeeldgegevens verstrekt waarbij de value 1 en value 2 kolommen hebben verschillende waarden (in het origineel waren ze hetzelfde). Dat verandert de vraag in dit:

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

De subquery krijgt een lijst met de vroegste creationdate voor elk domain , en de buitenste query selecteert alleen rijen waar het domain en creationdate overeenkomen met de subquerywaarden.




  1. Laravel 5.1 Bestanden uploaden Beveiliging

  2. Fix "ERROR 1250 (42000):Tabel '...' van een van de SELECT's kan niet worden gebruikt in de globale ORDER-clausule" bij gebruik van UNION in MySQL

  3. Backend-functionaliteit voor wachtwoordherstel

  4. Homebrew, MySQL 8-ondersteuning