问题描述如下

select   *  from  bseg

where   us  (between  6603040000   AND  6603189999 )      

    or     ( between  6603200000   AND  6603999999 )

 两个BETWEEN AND 区间满足其中一个 ,怎么修改     

十万个小问题 发布于 2022-5-24 13:37
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
七夜Lv6初级互助
发布于2022-5-24 13:39
select   *  from  bseg where  (us between  6603040000   AND  6603189999 )           or (us between  6603200000   AND  6603999999 )

最佳回答
0
吾姓独孤Lv6高级互助
发布于2022-5-24 14:07

你应该还有条件的吧,比如什么时候是第一个什么时候是第二个区间

最佳回答
0
Qian0Lv3见习互助
发布于2022-5-24 14:22

With T as (select * from besg where us between  6603040000   AND  6603189999 ) or (us between  6603200000   AND  6603999999 ))

select * from t 

但是不建议这样操作, or 会导致索引失效,如果数据量过多的话,会影响查询效率;

建议问题描述详细一点

最佳回答
0
shinger@126.comLv2见习互助
发布于2022-5-26 10:34

如果us字段上有索引,将or改为union查询,可以保证索引正常。使用or的时候,会导致索引失效

select   *  from  bseg

     where   us  between  6603040000   AND  6603189999      

union all

select * from bseg

    where us   between  6603200000   AND  6603999999 

  • 5关注人数
  • 326浏览人数
  • 最后回答于:2022-5-26 10:34
    请选择关闭问题的原因
    确定 取消
    返回顶部