如何解决从表中选择除 SELECTION 之外的所有内容 - MySQL
有一个表格,结构如下:
id | 栏 | foo | created_at | month_year |
---|---|---|---|---|
1 | A | 10 | 7/7/1999 | jan2020 |
2 | B | 20 | 7/7/1999 | jan2020 |
3 | C | 30 | 7/7/1999 | jan2020 |
4 | A | 40 | 7/7/1999 | jan2021 |
5 | A | 50 | 7/7/2000 | jan2021 |
6 | A | 60 | 7/7/2000 | 2021 年 2 月 |
我曾经运行过这样的查询:
delete ns
from foo ns
inner join
(
select month_year,max(nsa.created_at) created_at
from foo nsa
group by month_year
)
ns1 on ns1.month_year = ns.month_year and ns1.created_at <> ns.created_at;
该查询的想法是它用于根据唯一的 created_at
删除最后 month_year
的值。无论如何,它以我想要的方式工作。
问题:
我需要什么 - 不删除,以获取未从该查询中删除的值。试图用 delete
替换 select
并且我只设法获得了我需要删除的值(实际上这很有意义),但我想准确地获得我所做的值无法从该查询中获取。
解决方法
尝试左外连接,如下所示
select ns.*
from foo ns
left outer join
(
select month_year,max(nsa.created_at) created_at
from foo nsa
group by month_year
)
ns1 on ns1.month_year = ns.month_year and ns1.created_at <>
ns.created_at
where ns1.month_year IS NULL;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。