我只想知道仅在月份4月-2018年6月出现的数据,而忽略在此之前一个月出现的数据,idk为什么结果为0而不是当我检查随机数据手册时,它存在。这是我的语法
选择地区 d1.buyer_id, d1.tgl 来自data_2018 d1 INNER JOIN数据_2018 D2 开启d1.buyer_id = d2.buyer_id INNER JOIN数据_2017 D3 开启d1.buyer_id = d3.buyer_id 哪里 MONTH(d1.tgl)IN(4,5,6)和 MONTH(d2.tgl)NOT IN(1、2、3)和 MONTH(d3.tgl)NOT IN(1、2、3、4、5、6、7、8、9、10、11、12);
答案 0 :(得分:0)
我建议使用日期文字来指定所需的日期范围。另外,我建议在这里使用EXISTS
逻辑:
SELECT DISTINCT
d1.buyer_id,
d1.tgl
FROM data_2018 d1
WHERE
d1.tgl >= '2018-04-01' AND d1.tgl < '2018-07-01' AND
NOT EXISTS (SELECT 1 FROM data_2018 d2
WHERE d2.buyer_id = d1.buyer_id AND d2.tgl < '2018-04-01');
这假设您只想删除在 之前出现在2018年4月之前的记录。如果您还想限制在 出现在2018年6月之后,那么我们需要将该检查添加到EXISTS
子查询中。