Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL błędne wyniki z GROUP BY i ORDER BY

Oto Twoje zapytanie:

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

Jednym z głównych problemów z zapytaniem jest to, że używa rozszerzenia MySQL do group by że MySQL wyraźnie ostrzega przed. Rozszerzeniem jest użycie innych kolumn w select które nie są w group by lub w funkcjach agregujących. Ostrzeżenie (tutaj ) to:

Tak więc wartości zwracane w kolumnach są nieokreślone .

Oto całkiem skuteczny sposób na uzyskanie tego, czego chcesz (z poprawną pisownią „prowizji” po angielsku):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zaimplementować commit/rollback dla MySQL w PHP?

  2. 2017 @ Severalnines:Celebrujemy historie naszych klientów

  3. MySQL JOIN zwraca NULL pól

  4. Jak uzyskać skróconą nazwę miesiąca z daty w MySQL?

  5. cc1:błąd:nierozpoznana opcja wiersza poleceń -Wno-null-conversion podczas instalacji python-mysql na mac 10.7.5