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;
有一个 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;