如下SQL问题

  两个列 : 科目编号、成本编号,写一个WHERE 条件选中这两个区间内得数据

  区间:  科目编号  6603040000   -  6603189999   且 成本编号=1000

      科目编号  6603200000   -  6603999999   且 成本编号=1000 

  科目编号  6603040000   -  6603189999   且 成本编号=3000

      科目编号  6603200000   -  6603999999   且 成本编号=3000

  怎么写这个where条件呐

 

q.png

十万个小问题 发布于 2022-6-23 10:57
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
好好生活好好学习Lv7资深互助
发布于2022-6-23 11:03(编辑于 2022-6-23 11:04)

你怎么得数据?我觉着case when就可以

CASE WHEN  6603040000   <科目 <6603189999   and 成本 = 1000  then 区间一 

    WHEN  6603040000   <科目 <6603189999   and 成本 = 1000  then 区间二 

    WHEN  6603040000   <科目 <6603189999   and 成本 = 1000  then 区间三

end as 区间

大概举个例子

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-6-23 11:04

没看懂  这是4个区间还是2个区间?

最佳回答
0
用户fSXEs1919623Lv3见习互助
发布于2022-6-23 11:04

where (科目编号 between 6603040000  and  6603189999 and (成本编号=10000 or 成本编号=3000))

or ( 科目编号 between 6603200000 and  6603999999 and (成本编号=10000 or 成本编号=3000))

最佳回答
0
wuyongssLv2见习互助
发布于2022-6-23 11:06(编辑于 2022-6-23 11:08)

CASE WHEN 

科目编号  IN ('6603040000',...,'6603189999') AND 成本编号 ='1000' THEN '区间一'

科目编号  IN ('6603200000',...,'6603999999') AND 成本编号 ='1000' THEN '区间二'

 END  区间分类

最佳回答
0
小灰灰李Lv3见习互助
发布于2022-6-23 15:48

select  * from  表  where  (成本编号='1000'  and  (科目编号>='6603040000' and  <='6603189999'))or 

(成本编号='1000'  and  (科目编号>='6603200000' and  <='6603999999'))   or  (成本编号='3000'  and  (科目编号>='6603040000' and  <='6603189999'))  or   (成本编号='3000'  and  (科目编号>='6603040000' and  <='6603999999'))

最佳回答
0
shinger@126.comLv2见习互助
发布于2022-6-23 17:46

尽量不要用or,特别是如果这个表的数据量特别大的时候,看你的条件,6603189999和6603200000是连续的。这个查询可以直接写select * from table where 科目编号 between '6603040000' and '6603999999'    and 成本编号 in (1000,3000)

  • 5关注人数
  • 414浏览人数
  • 最后回答于:2022-6-23 17:46
    请选择关闭问题的原因
    确定 取消
    返回顶部