soporta - SQL. ¿Hay alguna manera eficiente de encontrar el segundo valor más bajo?
optimizar consultas mysql explain (4)
No estoy seguro de si este sería el más rápido, pero sería más fácil seleccionar el segundo, tercero, etc. Simplemente cambie el valor TOP.
ACTUALIZADO
SELECT MIN(price)
FROM table
WHERE price NOT IN (SELECT DISTINCT TOP 1 price FROM table ORDER BY price)
Tengo la siguiente tabla:
ItemID Price
1 10
2 20
3 12
4 10
5 11
Necesito encontrar el segundo precio más bajo. Hasta ahora, tengo una consulta que funciona, pero no estoy seguro de que sea la consulta más eficiente:
select min(price)
from table
where itemid not in
(select itemid
from table
where price=
(select min(price)
from table));
¿Qué pasa si tengo que encontrar el tercer o el cuarto precio mínimo? Ni siquiera estoy mencionando otros atributos y condiciones ... ¿Hay alguna forma más eficiente de hacer esto?
PD: tenga en cuenta que el mínimo no es un valor único. Por ejemplo, los elementos 1 y 4 son ambos mínimos. El orden simple no funciona.
Puede usar el orden por y luego seleccionar el número de fila 2 usando el método que se encuentra en esta respuesta .
SELECCIONAR MIN (precio) FROM tabla DONDE precio> (SELECCIONAR MIN (precio) FROM tabla)
select price from table where price in (
select
distinct price
from
(select t.price,rownumber() over () as rownum from table t) as x
where x.rownum = 2 --or 3, 4, 5, etc
)