Не понимаю, как переписать сложный sql-запрос после переноса сайта на другой сервер?

Всем привет.

Возникла проблема. В админке сайта, с помощью sql-запроса, выводится список диалогов пользователей, причем выборка нацелена на вывод уникальных диалогов, то есть, к примеру, юзер1 и юзер2 (все их совместные сообщения) объединяются в одну строку, в которой указаны их имена, id и время последнего общего сообщения. Вот код запроса:

$query1 = "SELECT DISTINCT IF(fromid < toid, fromid, toid) AS user1,IF(fromid >= toid, fromid, toid) AS user2, data FROM cmsa22_b_chat AS ccc ORDER BY data DESC";
    $rst=mysqli_query($db,"SELECT user1,user2 FROM ($query1) AS rows GROUP BY user1,user2 ORDER BY data DESC LIMIT 100");


Кстати, составлен этот код был благодаря более опытным коллегам с toster.ru, за что низкий им поклон ещё раз! (сорри за оффтоп)

Недавно сайт был перенесен на более современный сервер. После переноса MYSQL стал выдавать такую ошибку:

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'rows.data' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Я понимаю, что что-то не так с GROUP BY, но никак не въезжаю - что именно? Буду благодарен за совет.
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
@BorisKorobkov Куратор тега MySQL
Web developer
В дополнение к ответу vism

Вариант 3: выбирать ID (который в group by), а уже потом по нему отдельным запросом остальную информацию.

Вариант 4: для остальных полей (которые не в group by) использовать аггрегационные функции.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vism
Выражение # 1 предложения ORDER BY не находится в предложении GROUP BY и содержит неагрегированный столбец «rows.data», который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by

sql_mode = only_full_group_by отрубить
либо
rows.data добавить в группбай

Вы бы реально хотяб погуглили, это быстрее чем сюда вопрос писать ведь.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы