如何比较一个值是否在范围内?

时间:2017-01-04 05:01:17

标签: mysql sql

我有一张下面结构的表格:

enter image description here

现在我想在mysql或sql中编写一个查询来查看某个值是否在该范围内。

实施例: 假设用户传递 11 作为输入,现在这在在SampleNo 0和13之间,因此查询应该获取 100%as SNo

同样,如果用户通过 13 ,那么它应该将 A作为SNo 获取。

如果用户输入 15 作为输入,则位于13到25个SampleNo 之间,因此查询应该

期待您的解决方案。 提前谢谢。

7 个答案:

答案 0 :(得分:3)

SELECT SNo
from m_table
WHERE SampleNo <= @variable
ORDER BY SampleNo DESC
LIMIT 1;

答案 1 :(得分:3)

100

答案 2 :(得分:1)

您可以使用子查询:

select SNo
from your_table
where sampleNo = (select max(sampleNo)
    from your_table
    where sampleNo <= 11);

答案 3 :(得分:1)

这样的事情会起作用

SELECT sm1.* FROM mytable sm1 INNER JOIN 
(SELECT max(SampleNo) FROM mytable WHERE SampleNo <= ?) as sm2
on sm1.SampleNo = sm2.SampleNo

注意用适当的值替换?

但是你的问题是标题选择值BETWEEN其他两个,因为你提供的样本显示了紧接其下方的值。

另请注意,WHERE IN(子查询)仅在SampleNo没有任何重复值时才有效。

答案 4 :(得分:0)

这是存储过程,传递一个参数,在其中,首先它找到用户输入数字的max sampleno然后,它找到相同的sno。

create procedure dbo.sample @data int
as
select SNo
from samp
where sampleno = (select max(sampleno)
from samp
where samplemo <= @data);
go

exec dbo.sample @data=11

答案 5 :(得分:0)

检查这个。

        select SNo
        from #TableName
        where SampleNo = (select max(SampleNo)from #TableName
        where SampleNo <= 15);

答案 6 :(得分:-1)

Select SNo from tblname where N > SampleNo Order By SampleNo asc Limit 1

将tblname和N替换为正确值