比较范围的算法

时间:2014-11-18 22:55:02

标签: mysql algorithm

用户正在输入一系列可接受的值,例如30 - 60。

他想知道数据库中的哪些条目在该输入范围内至少有一个值。因此,如果输入是30 - 60,并且有一个59 - 100的条目,那么这是一个匹配。匹配也是20 - 80,40-50或28 - 32.因为它们都至少有一个与输入范围相匹配的值。

但是,如果输入范围为30 - 60,则应拒绝输入10 - 20或70 - 100。

范围保存在MySQL数据库中,包含两个字段--min和max。

知道如何查询/比较这个吗?

2 个答案:

答案 0 :(得分:0)

您需要使用BETWEEN运算符

select * from table1 where values between 30 and 60;

(或)where values between 59 and 100;

您也可以使用><运算符来获得相同的评估

select * from table1 where values >= 30 and values <= 60;

如果是草莓在评论中指出的范围比较那么你可以检查

where 30 < 59 and 59 < 60 and 60 < 100;

答案 1 :(得分:0)

您需要在WHERE句子中检查3个可能性:

1)当表minvalue介于value1和value2之间时 2)当表maxvalue介于value1和value2之间时 3)当表minvalue低于value1且maxvalue大于value2

例如:

构建数据库

create table demo (
id int,
beginning int,
ending int);
insert into demo(id,beginning,ending)
values (1,30,60);


insert into demo(id,beginning,ending)
values (2,0,60);

insert into demo(id,beginning,ending)
values (3,50,60);

insert into demo(id,beginning,ending)
values (4,60,100);

insert into demo(id,beginning,ending)
values (5,60,61);

<强>查询

SELECT * 
FROM demo 
WHERE beginning BETWEEN 50 AND 55
OR ending BETWEEN 50 AND 55
OR (beginning < 50 AND ending > 55)

<强>返回

ID BEGINNING ENDING

1 30 60

2 0 60

3 50 60

此致