Оставить в таблице людей с последней датой - 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
с использованием подзапросов.
- В подзапросе SELECT * FROM tab1 выбираются все данные из таблицы
tab1
. - В подзапросе SELECT f_name, MAX(f_date) AS f_date FROM tab1 GROUP BY f_name выбираются уникальные имена из таблицы
tab1
и к ним присваивается максимальная дата для каждого имени. - В основном запросе 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
, где будут только те строки, у которых имя и дата соответствуют имени и дате из подзапроса с максимальными значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д