比如:1  0    20   2    -- 0  < v <= 20   返回 2
2  20   30   4    -- 20 < v <= 30   返回 4
3  30   50   6    -- 30 < v <= 50   返回 6
4  50   100  8
.....
应该如何设计比较好, 还有, 用户可以修改, 可以添加, 那么判断又是如何判断是有合法呢? 即要添加一个 25~30就是不对的

解决方案 »

  1.   

    这样应该可以吧!判断的时候看两个范围界限是否在表中对应的范围内。exists (select 1 from tb where minN between ... and ... and maxN between ... and ...)
      

  2.   

    这个可以一列设计, 可以两列设计, 雖一规律, 是不能包含, 再说个例子 0~100  可以多个分段, 但不能包含
    0~50, 50~100 ok     0~50, 60~100 no    0~50, 40~100 no
      

  3.   

    就这么设计也可以,录入25-30则判断两头.例如:25
    if not exists(select 1 from tb where 25 between c1 and c2)
       ...但是临界点如30,有点麻烦,你自己考虑一下吧。
      

  4.   

    if not exists(select 1 from tb where 25 between c1 and c2)这里就固死了25啊
      

  5.   

    再说一个例子 0<V<=10能得2分, 10<V<=50能得5分  这里的10可以变, 变成20的话, 就是
    0<V<=20, 那么第二个, 就成了 20<V<=50这个分段主要是给客户看的, 现在就是如果对自己更方便, 也就是前期这个表就可设计较好