如何解决在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',('Spain3','2020-08-03 14:20:20'),('Spain4','2020-07-03 14:20:20'),('Spain5','2020-06-03 14:20:20'),('Spain6','JUL2020','2020-09-01 14:20:20'),('Spain7',('Spain8',('Spain9','AUG2020',('Spain10','2020-05-03 14:20:20'),('Spain11',('Porto1','AUG2019',('Porto2','2020-05-03 13:20:20'),'AUG2011','2020-05-03 13:20:20');
select * from aa;
产生:
如何修改select
查询,以便仅保留突出显示的列?逻辑是,Month_Year
列中的每个唯一值仅保留每个唯一created_at
具有最新Month_Year
的行。
https://www.db-fiddle.com/f/wEuUpiDyEHq8SZtLDpBm5Q/0#
解决方法
一个选项可通过子查询进行过滤:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。