Всем привет, давайте с вами рассмотрим следующий sql -запрос:
Допуcтим у нас в базе есть следующая таблица:
id tovar summa
========================================================
1 tovar1 1000
2 tovar2 10000
3 tovar3 2000
4 tovar4 1000
5 tovar5 3000
6 tovar6 3500
=========================================================
и нам нужно вернуть товар суммой в интервале от 1000 до 3000, первое что напрашивается в голову:
SELECT * FROM `tovar` WHERE `summa`>=1000 AND `summa`<=3000
Следовательно нам возвратятся все товары от 1000 до 3000 включительно.
То есть это (tovar1, tovar3,tovar4 и tovar5).
Теперь же давайте с вами решим эту же задачу, но с использованием оператора BETWEEN:
SELECT * FROM `tovar` WHERE `summa` BETWEEN 1000 AND 3000
Как видите результат точно такой же, то есть перед оператором BETWEEN у нас указано поле по которому будет происходить фильтрация, а после через оператор AND перечислены значения от и до какого значения суммы мы будем доставать наши товары из таблицы tovar
Как видите все довольно просто, однако по сравнению с первый способом, тут следует учитывать что нужно указывать интервал от меньшего к большему, если к примеру мы напишем так,
SELECT * FROM `tovar` WHERE `summa` BETWEEN 3000 AND 1000
то наш запрос ничего не вернет, помните про это!
Давайте теперь составим такой запрос:
SELECT * FROM `tovar` WHERE `summa` = '1000' OR `summa`='10000' OR `summa`='3000'
Мы получили товары которые стоят 1000 ,3000 и 10000.
Теперь давайте с вами сделаем это более простым и удобным способом, используя оператор IN
SELECT * FROM `tovar` WHERE `summa` IN(1000,3000,10000)
Как видите код у нас сократился , а результат сохранился.
Здесь мы перед оператором IN указали поле по которому у нас будет происходить фильтрация и после оператора в круглых скобочках перечислили все значения поля суммы по которым мы будем доставать наши данные из таблицы.
Вот и все дорогие друзья, надеюсь я смог донести до вас что то новое. Удачи!