#mysql
#mysql
Вопрос:
я обновил свою систему и установил MySQL 5.7.9 с php для веб-приложения, над которым я работаю. У меня есть запрос, который создается динамически, и при запуске в более старых версиях MySQL он работает нормально. После обновления до версии 5.7 я получаю эту ошибку: итак, это код, который выдает мне ошибки:
select *,SUM(payment) as payment,DATE_FORMAT(payment_date,'%b') as month
from payment
natural join branch
where YEAR(payment_date)='$year' and MONTH(payment_date)='$month'
group by branch_id,MONTH(payment_date)
order by MONTH(payment_date)
Я немного погуглил по этому вопросу, но я недостаточно понимаю only_full_group_by, чтобы понять, что мне нужно сделать, чтобы исправить запрос. Могу ли я просто отключить параметр only_full_group_by или мне нужно что-то еще сделать?
Дайте мне знать, если вам нужна дополнительная информация.
Комментарии:
1. Замените select * на select branch_id, месяц? Поскольку естественные объединения подразумевают, что читатель знает ваши схемы таблиц, лучшим объединением для удобства чтения было бы внутреннее соединение или левое соединение
Ответ №1:
вам нужно поместить все столбцы списка выбора в группу по
select branch_id,MONTH(payment_date),SUM(payment) as payment,DATE_FORMAT(payment_date,'%b') as month
from payment
natural join branch
where YEAR(payment_date)='$year' and MONTH(payment_date)='$month'
group by branch_id,MONTH(payment_date),DATE_FORMAT(payment_date,'%b')
order by MONTH(payment_date)