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)

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. SELECT - выбираются необходимые поля из таблицы.
  2. w.user_id, w.smartphone - указаны поля, которые необходимо выбрать.
  3. FROM TABLE w - указывается название таблицы, из которой производится выборка.
  4. 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5