Select MySQL 中每个唯一列的所有新输入值
Select all newly entered values per unique column in MySQL
drop table if exists aa;
create temporary table aa(`Country` varchar(100),`Month_Year` varchar(100),
`created_at` timestamp NOT NULL DEFAULT current_timestamp());
insert into aa(Country,Month_Year,created_at)
values('Spain1','JUN2020','2020-09-03 14:20:20'),
('Spain2','JUN2020','2020-09-03 14:20:20'),
('Spain3','JUN2020','2020-08-03 14:20:20'),
('Spain4','JUN2020','2020-07-03 14:20:20'),
('Spain5','JUN2020','2020-06-03 14:20:20'),
('Spain6','JUL2020','2020-09-01 14:20:20'),
('Spain7','JUL2020','2020-09-03 14:20:20'),
('Spain8','JUN2020','2020-09-03 14:20:20'),
('Spain9','AUG2020','2020-09-01 14:20:20'),
('Spain10','AUG2020','2020-05-03 14:20:20'),
('Spain11','AUG2020','2020-05-03 14:20:20'),
('Porto1','AUG2019','2020-05-03 14:20:20'),
('Porto2','AUG2019','2020-05-03 14:20:20'),
('Porto2','AUG2019','2020-05-03 13:20:20'),
('Porto2','AUG2011','2020-05-03 13:20:20');
select * from aa;
生产:
如何修改 select
查询,以便只保留突出显示的列?逻辑是 Month_Year
列中的每个唯一值,仅保留每个唯一值 Month_Year
具有最新 created_at
的行。
带有子查询的一个选项过滤器:
select t.*
from aa t
where t.created_at = (
select max(t1.created_at)
from aa t1
where t1.month_year = t.month_year
)
order by created_at desc
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f7d29f55ff6f3c573aec0887415b87b5
drop table if exists aa;
create temporary table aa(`Country` varchar(100),`Month_Year` varchar(100),
`created_at` timestamp NOT NULL DEFAULT current_timestamp());
insert into aa(Country,Month_Year,created_at)
values('Spain1','JUN2020','2020-09-03 14:20:20'),
('Spain2','JUN2020','2020-09-03 14:20:20'),
('Spain3','JUN2020','2020-08-03 14:20:20'),
('Spain4','JUN2020','2020-07-03 14:20:20'),
('Spain5','JUN2020','2020-06-03 14:20:20'),
('Spain6','JUL2020','2020-09-01 14:20:20'),
('Spain7','JUL2020','2020-09-03 14:20:20'),
('Spain8','JUN2020','2020-09-03 14:20:20'),
('Spain9','AUG2020','2020-09-01 14:20:20'),
('Spain10','AUG2020','2020-05-03 14:20:20'),
('Spain11','AUG2020','2020-05-03 14:20:20'),
('Porto1','AUG2019','2020-05-03 14:20:20'),
('Porto2','AUG2019','2020-05-03 14:20:20'),
('Porto2','AUG2019','2020-05-03 13:20:20'),
('Porto2','AUG2011','2020-05-03 13:20:20');
select * from aa;
生产:
如何修改 select
查询,以便只保留突出显示的列?逻辑是 Month_Year
列中的每个唯一值,仅保留每个唯一值 Month_Year
具有最新 created_at
的行。
带有子查询的一个选项过滤器:
select t.*
from aa t
where t.created_at = (
select max(t1.created_at)
from aa t1
where t1.month_year = t.month_year
)
order by created_at desc
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f7d29f55ff6f3c573aec0887415b87b5