У меня есть таблица «товары» с 3 столбцами (идентификатор, имя, цена). Мне нужно получить данные по списку идентификаторов и ценовой диапазон.
Я использую этот запрос:
SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1,10), (3,20), (2,10))
ORDER BY FIELD(id, 1,3,2)
Все в порядке, пока я использую строгие значения цены.
На самом деле мне нужно сделать запрос вроде:
SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1, BETWEEN 0 AND 100), (2, BETWEEN 50 AND 150), (n, BETWEEN m AND k))
ORDER BY FIELD(id, 1,3,n)
Я нашел выражение (1, BETWEEN 0 AND 100)
никогда не вернет нужный мне результат, в то время как (1,10)
будет.
Я, конечно, могу исключить записи по ценовому диапазону в php, но я пытаюсь найти более эффективный способ сделать это в запросе mysql с использованием индексов. Что мне делать?