@tkirsan4ik

Почему не верно отрабатывает вложенный запрос с группировкой MySQL?

Не могу понять почему не отрабатывает вложенный запрос и отдается неверный результат.
Условие - необходимо выбрать все значения из таблицы counter, у которых будут выбраны все записи из таблицы с уникальными значениями value_id, при максимальном значении из поля created_at. Уникальных value_id - 500 штук, всего записей в таблице - 5000. Т.е. мне нужны все записи из counter, у которых будет value_id всегда уникален а остальные данные самые ранние.
Суть:
Есть SQL-запрос вида
SELECT *
FROM `counter` 
where id in (SELECT ANY_VALUE(a.id) id FROM counter a GROUP BY a.value_id order by ANY_VALUE(a.created_at) DESC)
ORDER BY counter_id DESC, created_at DESC


этот запрос мне отдает все 5000 строк, хотя должен отдать 500.

При отдельном выполнении вложенного запроса - отдается верное количество записей, т.е. 500 штук.
Версия MySQL - 5.7
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `c`.*
  FROM (
    SELECT `value_id`, MAX(`created_at`) AS `created_at`
      FROM `counter`
      GROUP BY `value_id`
  ) as `t`
  JOIN `counter` AS `c`
    ON `c`.`value_id` = `t`.`value_id` AND `c`.`created_at` = `t`.`created_at`
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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