sql >> Databasteknik >  >> RDS >> Mysql

SQL:Hur håller man ordning på raderna med DISTINCT?

den distinct nyckelordet är att göra vad det är tänkt att göra, returnera en rad vardera med ett givet kolumnvärde. Distinct tillåter dig inte att ange vilket en sådan rad kommer att returneras, och det framgår av den ursprungliga frågan att en sådan ordning är tillåten (det finns en rad med id 443 som följer efter en rad med id 429).

För att ta kontroll över vilka rader som kommer att returneras måste du omformulera frågan. En typisk lösning jag kommer att ta är att använda en group by , välja gruppkolumnen och önskad rad från varje grupp, något till effekten av

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Om jag behöver göra mer kommer jag att använda den här typen av fråga som ett underval i en större fråga, eventuellt gå med i id-fältet för att få fler fält från den föredragna raden, eller ordna frågan på ett speciellt sätt.




  1. Adaptiv dynamisk statistik dödar prestanda i 12.1.0.2 RAC

  2. Kan SQL Server skicka en webbförfrågan?

  3. UPPER() Funktion i Oracle

  4. org.hibernate.AssertionFailure:null id i posten (spola inte sessionen efter att ett undantag inträffat)