MySQL: Как написать запрос который ищет ближайшее по условию значение?
>>НАИБОЛЬШИМ ближайшим

where количество >: запрошенное_количество
order by количество limit 1
SELECT * FROM (SELECT * FROM `good` WHERE qty >= 4 ORDER BY qty >= 4, qty LIMIT 1) as g
UNION 
SELECT * FROM (SELECT * FROM `good` WHERE qty < 4 ORDER BY qty < 4, qty DESC LIMIT 1) as g

Выбираете всегда первую строчку и это будет наибольшим ближайшим от 4. Если нет большего — вернется ближайший меньший от 4.