Выпуск новой версии mysql с only_full_group_by
Мне нужно, чтобы получить значение таблицы с помощью группы по (col_id) и порядок по (дата)
и мой код в MySQL следующим образом:
SELECT COUNT(created_date) AS `Rows` , ANY_VALUE(id)
FROM `table` where `my_id` = 1 AND `status` = '0'
GROUP BY `id`
ORDER BY `created_date` DESC
Я получаю ошибку, как следует
SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1055 Выражение # 1 предложения ORDER BY отсутствует в предложении GROUP BY и содержит неагрегированный столбец ‘database.table.created_date’, который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by
Кто-нибудь скажет решение?
Заранее спасибо…
С «только полная группа», order by
не может быть произвольным столбцом. order by
анализируется после group by
, поэтому разрешены только агрегированные ключи и агрегированные столбцы.
Вы можете использовать:
SELECT COUNT(created_date) AS `Rows`, ANY_VALUE(id)
FROM `table`
WHERE `my_id` = 1 AND `status` = '0'
GROUP BY `id`
ORDER BY ANY_VALUE(`created_date`) DESC;
Если бы мне пришлось угадывать, вы на самом деле хотите MAX()
:
ORDER BY MAX(`created_date`) DESC;
Других решений пока нет …