微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从表中选择除 SELECTION 之外的所有内容 - MySQL

如何解决从表中选择除 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 并且我只设法获得了我需要删除的值(实际上这很有意义),但我想准确地获得我所做的值无法从该查询获取

(随意将标题编辑为在 sql 中更有意义的内容

解决方法

尝试左外连接,如下所示

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 举报,一经查实,本站将立刻删除。