sql >> Databasteknik >  >> RDS >> Mysql

Välj dubblett och behåll den äldsta (ej baserat på ID)

Baserat på dina exempeldata och resultat, en GROUP BY ger dig de resultat du är ute efter:

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

Tillägg :@Arka tillhandahöll uppdaterade exempeldata där value 1 och value 2 kolumner har olika värden (i originalet var de samma). Det ändrar frågan till detta:

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

Underfrågan får en lista över det tidigaste creationdate för varje domain , och den yttre frågan väljer bara rader där domain och creationdate matcha underfrågans värden.




  1. Överträdelse av integritetsbegränsning:1452 Kan inte lägga till eller uppdatera en underordnad rad:

  2. Hur man använder MySql och Entity Framework 4.1-koden först

  3. MySQL - Hur man får sökresultat med korrekt relevans

  4. Vad kan orsaka intermittenta ORA-12519 (TNS:ingen lämplig hanterare hittades) fel