Вам нужно отсортировать товары по наименьшей разнице между значением в таблице и введёнными данными
ORDER BY (ABS(volume - %введёный объём%)) ASC
ABS используется для получения абсолютного значения иначе могут быть не корректные результаты, для нескольких условий вам понадобится сложить все разницы
ORDER BY (ABS(volume - %введёный объём%) + ABS(height - %введёная высота%)) ASC`
и отсечь нужное количество используя LIMIT например
LIMIT 3
в итоге у вас должно получиться что-то подобное
SELECT * FROM articles ORDER BY (ABS(volume - 5)) ASC LIMIT 3
или (для нескольких параметров)
SELECT * FROM articles ORDER BY (ABS(volume - 5) + ABS(height - 8)) ASC LIMIT 3