mysql-workbench - 在mysql上根据月份过滤数据
问题描述
我只想知道仅出现在 2018 年 4 月至 2018 年 6 月的数据,并忽略在此之前一个月出现的数据,我想知道为什么当我检查随机数据手册时结果为 0,它是存在的。这是我的语法
SELECT DISTINCT d1.buyer_id, d1.tgl FROM data_2018 d1 INNER JOIN data_2018 d2 ON d1.buyer_id = d2.buyer_id INNER JOIN data_2017 d3 ON d1.buyer_id = d3.buyer_id WHERE MONTH(d1.tgl) IN (4, 5, 6 ) AND MONTH(d2.tgl) 不在 (1, 2, 3) AND MONTH(d3.tgl) 不在 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 );
解决方案
我建议使用日期文字来指定您想要的日期范围。另外,我建议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
子查询中添加一个检查。
推荐阅读
- java - 用于读取 GPIO 引脚状态变化的 Java epoll 选择器
- python - pyparsing - 如何提前查找不明确的语法(带有/不带时区解析的时间戳)
- java - 遍历 HashMap 中的值并查看特定 HashSet 出现次数的算法
- powerbi - DAX - 如何根据索引计算两个表中缺少的行
- node.js - 在节点 js 中导入
- javascript - 使用 document.createElement 测试该元素的 scrollHeight 和 clientHeight 时,值始终为 0
- ubuntu - Ubuntu 终端中 Vim 的边缘未填充颜色方案
- java - 仅当 BufferedReader 中有数据时如何创建文件?
- xml - 使用 xslt 1.0 从多节点 xml 获取特定值
- postgresql - PostGis -> ST_Contains:如何检查表的哪个 BBox 是当前 BBox