Tengo una tabla con la siguiente estructura:

enter image description here

Ahora quiero escribir una consulta en mysql o sql para ver si un valor está dentro del rango o no.

Ejemplos: Supongamos que si un usuario pasa 11 como entrada, ahora se encuentra entre SampleNo 0 y 13 , por lo que la consulta debería obtener 100% como SNo

Del mismo modo, si el usuario pasa 13 , debe obtener A como SNo .

Si un usuario pasa 15 como entrada, este se encuentra entre 13 y 25 SampleNo , por lo que la consulta debe obtener A como SNo y así sucesivamente

Esperamos sus soluciones. Gracias por adelantado.

-1
Roy 4 ene. 2017 a las 08:01

7 respuestas

La mejor respuesta
SELECT SNo
from m_table
WHERE SampleNo <= @variable
ORDER BY SampleNo DESC
LIMIT 1;
3
Tah 4 ene. 2017 a las 05:05

Este es un procedimiento almacenado, se pasa un parámetro y, dentro de él, primero encuentra el número máximo de muestra del número ingresado por el usuario y luego encuentra el sno para el mismo.

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
0
clearlight 4 ene. 2017 a las 06:21

Algo como esto funcionaría

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

Tenga cuidado de reemplazar ? con el valor adecuado.

Sin embargo, su pregunta es el valor de selección de título ENTRE otros dos donde, como la muestra que ha proporcionado, muestra el valor que está inmediatamente debajo de él.

También tenga en cuenta que un WHERE IN (subconsulta) solo funcionaría si no hay valores duplicados para SampleNo.

1
e4c5 4 ene. 2017 a las 05:09

Puede usar Subconsulta para esto:

select SNo
from your_table
where sampleNo = (select max(sampleNo)
    from your_table
    where sampleNo <= 11);
1
Gurwinder Singh 4 ene. 2017 a las 05:04
select SNo from your_table where SampleNo <= InputValue Order by SampleNo DESC LIMIT 1
3
Chandresh P. 4 ene. 2017 a las 05:18
Select SNo from tblname where N > SampleNo Order By SampleNo asc Limit 1

Reemplace tblname y N con el valor adecuado

-1
mokh223 4 ene. 2017 a las 05:05

Mira esto.

        select SNo
        from #TableName
        where SampleNo = (select max(SampleNo)from #TableName
        where SampleNo <= 15);
0
Mr. Bhosale 4 ene. 2017 a las 05:24