gpt4 book ai didi

mysql - 对单个表执行集合减法

转载 作者:可可西里 更新时间:2023-11-01 08:21:57 25 4
gpt4 key购买 nike

我有一个存储成员(member)记录的表。每个成员每年一个记录。例如:

MEMBER   YEAR
--------------
steve 2011
steve 2010
bob 2010
jane 2011

我要生成的是给定年份的失效成员(未续订的成员)列表。类似于“获取所有拥有 2010 年但没有 2011 年条目的成员”。

我已经研究这个问题一段时间了,我能找到的最接近的例子是比较两个表。

最佳答案

使用 LEFT JOIN/IS NULL

   SELECT a.member
FROM YOUR_TABLE a
LEFT JOIN YOUR_TABLE b ON b.member = a.member
AND b.year = 2011
WHERE a.year = 2010
AND b.member IS NULL

使用 NOT EXISTS

   SELECT a.member
FROM YOUR_TABLE a
WHERE a.year = 2010
AND NOT EXISTS (SELECT NULL
FROM YOUR_TABLE b
WHERE b.member = a.member
AND b.year = 2011)

使用 NOT IN

SELECT a.member
FROM YOUR_TABLE a
WHERE a.year = 2010
AND a.member NOT IN (SELECT b.member
FROM YOUR_TABLE b
WHERE b.year = 2011)

性能

性能取决于比较的列是否可为 NULL(值可以为 NULL):

关于mysql - 对单个表执行集合减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com