SELECT 除了来自 table - MySQL 的 SELECTION 之外的所有内容

SELECT everything but the SELECTION from a table - MySQL

有一个 table,结构如下:

id bar 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 feb2021

我曾经 运行 这样的查询:

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;

该查询的想法是,它过去常常根据唯一 month_year 删除最后 created_at 的值。无论如何,它按照我想要的方式工作。

问题:

我需要什么 - 不删除,以获取未从该查询中删除的值。试图用 select 替换 delete 并且我只设法获得了我需要删除的值(实际上这很有意义),但我想准确地获得我所做的值无法从该查询中获得。

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

按如下方式尝试 LEFT OUTER JOIN

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;