在mysql上根据月份过滤数据

时间:2019-12-27 06:38:37

标签: mysql-workbench

我只想知道仅在月份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);

1 个答案:

答案 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子查询中。