如何编写SQL查询指定日期范围内含重复signum的所有条目
解决方案
场景1:仅统计指定日期范围内的重复signum
如果你需要的是只看2021年范围内的signum重复情况,不考虑范围外的记录,使用如下写法:
SELECT * FROM dmt_teamresource WHERE startdate BETWEEN '2021-01-31' AND '2021-12-31' AND signum IN ( SELECT signum FROM dmt_teamresource WHERE startdate BETWEEN '2021-01-31' AND '2021-12-31' GROUP BY signum HAVING COUNT(signum) > 1 );
场景2:signum全表重复且条目落在日期范围内
如果你需要的是signum在整个表中存在重复(无论日期),且对应条目本身在2021年范围内,使用如下写法:
SELECT * FROM dmt_teamresource WHERE startdate BETWEEN '2021-01-31' AND '2021-12-31' AND signum IN ( SELECT signum FROM dmt_teamresource GROUP BY signum HAVING COUNT(signum) > 1 );
注意事项
- 原写法中的
is between是语法错误,BETWEEN关键字前不需要加IS - 如果
startdate是带时分秒的DATETIME类型,建议将结束日期改为'2021-12-31 23:59:59',避免遗漏12月31日当天带时间的记录
内容的提问来源于stack exchange,提问作者Vlok
相关产品推荐
相关产品推荐

