Задать вопрос
@lolka02

Почему не работает сортировка в мультигруппировке в Mysql?

Есть запрос типа
SELECT * FROM table group by category_id, tag_id ORDER BY created_date


данные без группировки

[0] => Array
        (
..
            [category_id] => 58
            [tag_id] => 
            [created_date] => 2021-04-20
        )

    [1] => Array
        (
..
            [category_id] => 59
            [tag_id] => 
            [created_date] => 2021-04-20
        )

    [2] => Array
        (
..
            [category_id] => 59
            [tag_id] => 
            [created_date] => 2021-04-21
        )

    [3] => Array
        (
..
            [category_id] => 58
            [tag_id] => 
            [created_date] => 2021-04-21
        )
....


по идее он должен выводить первые две записи, но выводить последующие записи
[0] => Array
        (
..
            [category_id] => 58
            [tag_id] => 
            [created_date] => 2021-04-21
        )

    [1] => Array
        (
            [category_id] => 59
            [tag_id] => 
            [created_date] => 2021-04-24
        )


Как делать правильную группировку?
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ваш запрос сначала выполняет группировку, а потом результат группировки сортирует по created_date.
Вот только в группу могут войти несколько строк с разными значениями created_date. Какое именно из этих значений должно попасть в финальную выборку и почему?
MySQL не гарантирует, что это значение будет из конкретной строки. И не гарантирует, что при каждом следующем запросе это значение будет из одной и той же строки.
А начиная с версии 5.7 ваш запрос вообще может выдать ошибку, поскольку по умолчанию включён режим ONLY_FULL_GROUP_BY.
https://dev.mysql.com/doc/refman/5.7/en/group-by-h...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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