sql >> Database >  >> RDS >> Mysql

MySQL haalt laatste datumrecords van meerdere

Je kunt gebruik GROUP BY , maar het is belangrijk om te begrijpen hoe het werkt.

Wanneer u GROUP BY . gebruikt een groep rijen wordt samengevouwen tot één en wat wordt weergegeven in de andere kolommen die niet worden gebruikt in uw GROUP BY clausule, wordt bepaald door gebruik te maken van geaggregeerde functies of het is een willekeurige rij uit die groep. U weet niet zeker of u de rij krijgt die overeenkomt met de weergegeven rij met de MAX() waarde of welke geaggregeerde functie u ook hebt gebruikt. Dit wordt vooral duidelijk wanneer u een zoekopdracht uitvoert als:

SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id

De "another_column" kan behoren tot de rij met de MIN()-waarde of de MAX()-waarde of zelfs tot een andere rij die helemaal niet wordt weergegeven. In andere RDBMS dan MySQL is het eigenlijk verboden om kolommen te selecteren die geen aggregatiefunctie gebruiken of die niet in de GROUP BY staan. clausule, gewoon om te voorkomen dat gebruikers een fout maken of denken dat ze het juiste resultaat hebben gekregen.

Dus in jouw geval lijkt het erop dat je de kolom "waarde" ook wilt weergeven. Om bovenstaande redenen is het antwoord van juergen_d verkeerd, omdat het niet "waarde" selecteert, en als dat het geval zou zijn, weet je niet zeker of het de juiste "waarde" is. Het antwoord van Filipe Silva is fout, omdat het is gegroepeerd op "waarde". Als u dit doet, krijgt u in uw geval de hele tabel terug. Het antwoord van Romesh is fout, omdat tweemaal de MAX() . wordt gebruikt functie krijgt u de maximale waarden, uiteraard maar niet de waarde die overeenkomt met de datetime-waarde.

Dus, hoe moet je het doen? Hier worden 3 manieren beschreven . Leer ze door ze zelf toe te passen. Het is niet zo moeilijk :)



  1. Moet ik mysql uitvoeren op Google Cloud Run? (of een database)

  2. Mysql Selecteer tweede rij

  3. doctrine2 - Hoe de spoelefficiëntie verbeteren?

  4. Alle geïnstalleerde Oracle-versies detecteren