我需要编写一些基本的代码
SELECT all member ID's from TABLE where state = accepted and date is between 2016 and 2017 and date isn't between 2018-2019
我在代码中想到的是:
select distinct "bookings"."memberId"
from "shifts"
inner join "bookings" on "bookings"."shiftId" = "shifts"."id"
where "shifts"."startTime"
not between '2016-01-02 00:00:00.000' and '2020-01-01 23:59:59.999'
and "bookings"."state" in ('ACCEPTED')
EXCEPT
select distinct "bookings"."memberId"
from "shifts"
inner join "bookings" on "bookings"."shiftId" = "shifts"."id"
where "shifts"."startTime" >= '2015-01-01 00:00:00.000' and "shifts"."startTime" <= '2016-01-01 23:59:59.999'
and "bookings"."state" in ('ACCEPTED')
如果我运行此命令,它将不返回任何内容(0行),但是如果我运行查询直到除非它返回我的行,然后如果我将除之后的所有内容都取走,则它也会给我行,但是当我尝试同时使用除了失败
答案 0 :(得分:2)
那么,这两个集合必须完全重叠,因此所有行都将丢失。首先,您要获取2016年至2020年之间的所有内容。
这包括所有从2015年开始的行。我希望它返回2015年之前开始的成员,但也许不存在。
我用一个更简单的查询回答了一个非常相似的question。您应该使用它。