Оставить в таблице людей с последней датой - MySQL

Узнай цену своей работы

Формулировка задачи:

добрый день. Суть задачи : есть таблица, в ней 2 колонки Имя и Дата: Ольга Иванова 2015.01.01 Ольга Иванова 2014.02.01 Ольга Иванова 2013.05.01 Иван Иванов 2008.05.01 Иван Иванов 2004.05.01 Иван Иванов 2000.05.01 можно ли запросом сделать так чтобы в выборке у меня остались люди с последними датами т.е был резульnат: Ольга Иванова 2015.01.01 Иван Иванов 2008.05.01 Если есть предположения буду рад услышать, заранее спасибо!

Решение задачи: «Оставить в таблице людей с последней датой»

textual
Листинг программы
SELECT T1.*
FROM
(
SELECT *
FROM tab1
) T1,
(
SELECT f_name, MAX(f_date) AS f_date
FROM tab1
GROUP BY f_name
) T2
WHERE T1.f_name = T2.f_name
  AND T1.f_date = T2.f_date

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

В данном коде происходит выборка данных из таблицы tab1 с использованием подзапросов.

  1. В подзапросе SELECT * FROM tab1 выбираются все данные из таблицы tab1.
  2. В подзапросе SELECT f_name, MAX(f_date) AS f_date FROM tab1 GROUP BY f_name выбираются уникальные имена из таблицы tab1 и к ним присваивается максимальная дата для каждого имени.
  3. В основном запросе SELECT T1. FROM (SELECT FROM tab1) T1, (SELECT f_name, MAX(f_date) AS f_date FROM tab1 GROUP BY f_name) T2 WHERE T1.f_name = T2.f_name AND T1.f_date = T2.f_date происходит сравнение данных из первого подзапроса со вторым подзапросом и выбираются только те строки, где имена и даты совпадают. Таким образом, результатом выполнения данного кода будет выборка данных из таблицы tab1, где будут только те строки, у которых имя и дата соответствуют имени и дате из подзапроса с максимальными значениями.

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


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

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

5   голосов , оценка 4 из 5
Похожие ответы