Проблемы с sql_mode=ONLY_FULL_GROUP_BY?

Добрый день, помогите победить ошибку:
MySQL error in file: W:\eee3.ru\index.php at line 21
Expression #4 of SELECT list is not in GROUP BY clause and contains
nonaggregated column 'test.so.idate' which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


select SQL_CALC_FOUND_ROWS name, ( max(word in ('ен')) + max(word in ('от')) ) as R, sum(weight) as W, idate, id_obj 
from search_object as so, search_index as i where so.id = i.id_obj 
and word in ('ен', 'от') group by name 
order by R desc, W desc, idate desc limit 0, 10


Как более или менее корректно подогнать запрос?
  • Вопрос задан
  • 4548 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В режиме ONLY_FULL_GROUP_BY все получаемые в запросе данные должны быть в агрегатных функциях (SUM, COUNT, MAX, и т.д.) или по ним должна проводиться группировка. В вашем запросе `idate` не входит ни туда, ни туда, поэтому MySQL в строгом режиме не знает, из какой именно строки таблицы взять значение.
Либо убирайте колонку `idate` из запроса, либо включайте её в агрегатную функцию.
Можете отключить ONLY_FULL_GROUP_BY, тогда `idate` будет браться, как правило, из первой строки, попавшей в группировку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы