#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
она определена как первичный ключ.