遇到这么一个小问题,根据录入的起点数值和终点数值到数据库查看录入的这个区间在数据库中是不是存在,这个问题其实就是一个逻辑判断,但是当时一下子没像清楚。画个图看一下就明白了。下面我用图表示下:
其中红色表示数据库中的值,黑色表示输入的值,下面“起点”用qd表示,“终点”用zd表示,输起用“sq”表示,“输终”用sz表示。
首先第一种情况他的sql我们经常写,qd<=sq and zd >=sd
第二种情况那其实就是数据库记录的起点数值在输入数值的中间,也就是 qd > sq and qd < sz
第三种情况和第二种类似,就是 zd > sq and zd < sz
第四种情况就是输入的数值包含了数据库记录的区间数值,也就是 qd >= sq and zd <= sz
把上面的四种情况和起来查询的结果就是输入的数值区间在数据库中已存在的记录,
最后的sql是这样的:
select * from temp t where ((qd<=sq and zd >=sd) or ( qd > sq and qd < sz ) or (zd > sq and zd < sz) or (qd >= sq and zd <= sz) ) and t.id !=0