sql >> Database >  >> RDS >> Mysql

MySQL verkeerde resultaten met GROUP BY en ORDER BY

Dit is uw vraag:

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

Een groot probleem met uw zoekopdracht is dat deze een MySQL-extensie gebruikt om group by dat MySQL expliciet waarschuwt tegen. De extensie is het gebruik van andere kolommen in de select die niet in de group by zitten of in aggregatiefuncties. De waarschuwing (hier ) is:

De waarden die in de kolommen worden geretourneerd, zijn dus onbepaald .

Hier is een behoorlijk efficiënte manier om te krijgen wat je wilt (met "commissie" correct gespeld in het Engels):

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. Wat is het verschil tussen utf8_general_ci en utf8_unicode_ci?

  2. undefined index Naam

  3. Waarschuwing:mysql_fetch_array() verwacht dat parameter 1 een bron is [...]

  4. XML-tekenreeksparameter doorgeven aan SQL Server opgeslagen procedure