Group by, последнее значение - MySQL
Формулировка задачи:
Добрый день, товарищи программисты!
Имеется таблица с тремя столбцами (`id`,`user_id`,`smartphone`). Несколько человек купили по несколько смартфонов.
Мне нужно вытащить все user_id с последним смартфоном которые они купили.
с помощью группировки по `user_id` выводится первый смартфон который они купили, а мне нужно последний. desc в конце тоже не помогает. Могли бы вы помочь
Решение задачи: «Group by, последнее значение»
textual
Листинг программы
SELECT w.user_id, w.smartphone FROM TABLE w WHERE w.id IN (SELECT MAX(q.id) FROM TABLE q GROUP BY q.user_id)
Объяснение кода листинга программы
В данном коде происходит следующее:
- SELECT - выбираются необходимые поля из таблицы.
- w.user_id, w.smartphone - указаны поля, которые необходимо выбрать.
- FROM TABLE w - указывается название таблицы, из которой производится выборка.
- WHERE w.id IN (SELECT MAX(q.id) FROM TABLE q GROUP BY q.user_id) - в этом блоке производится фильтрация результатов выборки.
- SELECT MAX(q.id) FROM TABLE q GROUP BY q.user_id - в этом запросе находится максимальное значение id для каждого user_id.
- w.id IN (...) - проверяется, принадлежит ли id выбранному значению.
- Таким образом, в итоговую выборку попадают только те строки, у которых id соответствует последнему значению id для каждого user_id.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д