日期:2014-05-20  浏览次数:20727 次

数据库一个比较经典的问题
如果有输入开始数4   结束数7
此时,我再输入开始数2   结束数6
数据库就变成开始数2   结束数7
如果输入开始1   结束9
就覆盖为1和9
如果输入开始0   结束9
就覆盖为0和9
时间为:15分钟

------解决方案--------------------
不明白你的用意?
以上到底要做什么?
------解决方案--------------------
分别存入两个字段low_code和high_code。
接收到新的范围后,小的数与low_code比较,如果小的数 <low_code,则用小的数覆盖low_code;大数与high_code比较,如果大的数> high_code,则用大的数覆盖high_code。
------解决方案--------------------
写一条SQL语句能够应付以上等条件?
只能写一条语句吗-.-
x <inputx?x:inputx
y> inputy?y:inputy
select * from atable where colom> x and colom <y

------解决方案--------------------
这也是经典问题?

------解决方案--------------------
你可以先判断他输入的数阿,合法了再做下面的操作
------解决方案--------------------
写个存储过程调用很简单。
------解决方案--------------------
oracle中用两个函数 :
updata tabel set min=LEAST(min,minval),max=GREATEST(max,maxval) where ...
------解决方案--------------------
这地方不错
------解决方案--------------------
表名table
字段名s1 s2
输入变量x1 x2

更新语句
"update table set s1=s1+(abs(s1- "+x1+ ")+(s1- "+x1+ "))/2,s2=s2+(abs(s2- "+x2+ ")+(s2- "+x2+ "))/2 " ;

原理
x大于y时 x=x-(|x-y|+(x-y))/2;这时x就为小的那个也就是y
x小于y时 x=x-(|x-y|+(x-y))/2;这时x仍为小的那个也就是x
求大的那个相同道理
x大于y时 x=x+(|x-y|+(x-y))/2;
x小于y时 x=x+(|x-y|+(x-y))/2;

根据 负数的绝对值是本身的相反数

JF 呵呵


------解决方案--------------------
学习``
------解决方案--------------------
被骗贞操~~
------解决方案--------------------
很明显写个triger就可以了,代替你的insert语句
------解决方案--------------------
select * ................
------解决方案--------------------
表名table
字段名s1 s2
输入变量x1 x2

update table set s1=case when s1 <x1 then s1 else x1 end,s2=case when s2> x2 then s2 else x2 end
------解决方案--------------------
ding