Ошибка, связанная с режимом sql= only_full_group_by при выполнении запроса в MySQL

#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)