Группировать по порядку и упорядочивать вместе вызывают ошибку

#sql

#sql

Вопрос:

У меня есть sql-запрос, в котором я использую group by и order By, но он выдает ошибку, а не выражение GROUP BY

 select co.id , count(col.course_fk) from student co inner join 
course col on col.course_fk = co."ID" where (co.phone=:param)
group by co.id  ORDER BY co.create_date_time asc;
  

Если я удалю OrderBy, то он работает нормально и дает результат. Как мне изменить свой запрос, чтобы я мог использовать как order by, так и group by.

Комментарии:

1. . . Я удалил несовместимые теги базы данных. Пожалуйста, помечайте только ту базу данных, которую вы действительно используете.

Ответ №1:

order by Столбец отсутствует в select . Итак, используйте столбец агрегации. Я мог бы догадаться:

 select co.id, count(col.course_fk)
from student co inner join 
     course col
    on col.course_fk = co.ID
where co.phone = :param
group by co.id  
order by min(co.create_date_time) asc;
  

Или включите столбец в group by :

 select co.id, count(col.course_fk)
from student co inner join 
     course col
    on col.course_fk = co.ID
where co.phone = :param
group by co.id, co.create_date_time
order by co.create_date_time asc;
  

Примечание: ваша исходная версия не вызовет проблем в MySQL, если course.id она определена как первичный ключ.