sql >> Database teknologi >  >> RDS >> Mysql

MySQL forkerte resultater med GROUP BY og ORDER BY

Dette er din forespørgsel:

SELECT *
FROM (SELECT *
      FROM user_comission_configuration_history
      ORDER BY on_date DESC
     ) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;

Et stort problem med din forespørgsel er, at den bruger en MySQL-udvidelse til at group by at MySQL eksplicit advarer imod. Udvidelsen er brugen af ​​andre kolonner i select som ikke er i group by eller i aggregeringsfunktioner. Advarslen (her ) er:

Så de værdier, der returneres i kolonnerne, er ubestemte .

Her er en ret effektiv måde at få det, du ønsker (med "kommission" stavet korrekt på engelsk):

SELECT *
FROM user_commission_configuration_history cch
WHERE NOT EXISTS (select 1
                  from user_commission_configuration_history cch2
                  where cch2.user_id = cch.user_id and
                        cch2.commission_id = cch.commission_id and
                        cch2.on_date > cch.on_date
                 ) AND
      cch.user_id = 408002;


  1. MySQL konverter YEARWEEK til dato

  2. Sphinx uden at bruge et auto_increment-id

  3. Hvordan gemmer man eurosymbolet i mysql-databasen?

  4. django.core.exceptions.ImproperlyConfigured:Fejl ved indlæsning af MySQLdb-modul:Intet modul med navnet MySQLdb