sql >> Databasteknik >  >> RDS >> Mysql

MySQL fel resultat med GROUP BY och ORDER BY

Det här är din fråga:

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

Ett stort problem med din fråga är att den använder ett MySQL-tillägg för att group by att MySQL explicit varnar för. Tillägget är användningen av andra kolumner i select som inte finns i group by eller i aggregeringsfunktioner. Varningen (här ) är:

Så, värdena som returneras i kolumnerna är obestämda .

Här är ett ganska effektivt sätt att få det du vill ha (med "kommission" rättstavat på engelska):

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. Skäl att uppgradera till SQL Server 2017

  2. pip installera mysqlclient returnerar fatalt fel C1083:Kan inte öppna filen:'mysql.h':Ingen sådan fil eller katalog

  3. MySQL SELECT inkrementräknare

  4. postgresql - sql - antal "sanna" värden