用户输入两个数据,这是一个间隔期,并在数据库中存储为INT。 假设我有如下的数据:允许未在SQL Server中使用查询输入数据
Table :cheque_book_mcg
id acc_no cheq_bk_no cheq_no_frm cheq_no_to sch_id no_from no_to
401 010000001 285 01029101 01029125 010 29101 29125
402 001000467 277 00130326 00130350 001 30326 30350
403 001000467 54 00122252 00122275 001 22252 22275
404 001000467 1149 00167551 00167575 001 67551 67575
405 003000016 45 00322301 00322325 003 22301 22325
406 001000468 46 00122326 00122350 001 22326 22350
407 001000470 335 00122401 00122425 001 22401 22425
408 001000471 848 00164651 00164675 001 64651 64675
409 001000471 1346 00145476 00145500 001 45476 45500
用户可以进入的间隔(no_from和no_to)如需要的话,这是不重复条目。 这样,在当前上下文中,用户可以输入(no_from = 1和no_to = 10),然后如果用户输入(21和30),它也必须是有效的,并且之间也存在间隔差距,所以之后如果用户想要添加(11和20)的数据,应该是有效的,参考上面输入的数据,用户也可以输入剩余的时间间隔,上表中最高的时间间隔是(67551和67575),所以用户也可以输入从(67576等)开始的时间间隔,用户也可以输入低于上面输入的时间间隔的时间间隔以及输入数据之间的间隔时间。但不应该重复,间隔。我写了一个查询,如下所示:
SELECT
CASE WHEN ((select MAX(id) from cheque_book_mcg WHERE no_to < 1) = (select MIN(id) from cheque_book_mcg WHERE no_from <= 20))
THEN
'yes'
ELSE
'no'
END as valid
这适用于进入该表提供的数据之间的时间间隔,但较低的间隔比以前输入的时间间隔下无法正常工作和较高的间隔不工作高于先前输入的时间间隔。
如何实现这个目标?
是否要上一个是否有重叠的范围?所以如果你的范围(1,20)存在,范围(11,30)应该被拒绝? –
是的,就是这样。 – SudeepShakya