Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL грешни резултати с GROUP BY и ORDER BY

Това е вашето запитване:

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

Един основен проблем с вашата заявка е, че тя използва разширение MySQL за group by че MySQL изрично предупреждава срещу. Разширението е използването на други колони в select които не са в group by или в агрегиращи функции. Предупреждението (тук ) е:

И така, върнатите стойности в колоните са неопределени .

Ето един доста ефективен начин да получите това, което искате (с "commission" правилно изписан на английски):

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. Пагинация в nodejs с mysql

  2. как да изберете брой от основната заявка в подзаявка

  3. Докато импортирате mysqldump файл ГРЕШКА 1064 (42000) близо до „ ■/“ на ред 1

  4. JavaScript Потвърдете преди изтриване с PHP/MYSQL

  5. MySQL се присъединява и COUNT(*) от друга таблица