开发者社区> 问答> 正文

get range 范围查询,能不能查询到两个主键区间内的总记录数?

请问:get range 范围查询,能不能查询到两个主键区间内的总记录数?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
初商 2019-09-12 10:59:01 1041 0
1 条回答
写回答
取消 提交回答
  • 查询要求:过滤出s落在某月2号到9号内的数据或者e落在2号到9号内的数据。

    分析:按字面的理解,就是取条件:2<=s<=9||2<=e<=9下的数据,由于一条数据是由s和e同时确定的,所以这样取出的数据, 是包含重复数据的,重复数据的条件是2<=s<=e<=9,当然使用distinct或者not exsit,not in等关键字可以过滤掉。

    另一个好的思路是使用数学中集合补集的概念(当然第一个思路也使用了集合的思想):数据库中的某条数据要么符合条件,要么不符合条件,两者互斥。如果从正向直接找符合条件的不好找,那么可以 逆向考虑,找不符合条件的数据,然后取其否定。在这个例子中,所有不符合条件的数据包括:s>9的数据(e>=s>9)和e<2的数据(s<=e<2),用数学表达式表示(s>9∪e<2,∪是||的意思),取其否定的数据即为符合的条件的,否定的数据表达式为:s<=9∩e>=2,(∩是&&的意思)转换成sql表达式即为  start_time <=9 AND end_time>=2

    2019-09-17 16:09:22
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载