#php #mysql
#php #mysql
Вопрос:
Есть ли какая-либо возможность создать оператор MySQL для выбора числа, если оно меньше некоторого значения? Допустим, у меня есть переменная php: myvar = 123;
И у меня есть несколько записей в базе данных: 120 125 129 121
Я хочу взять все возможные записи базы данных, где разница между myvar и record меньше 5. В этом примере потребуется 120, 125 и 121. Возможно ли это сделать? Если да, может быть, кто-нибудь может мне помочь?
Комментарии:
1. пожалуйста, поделитесь с нами кодом, который вы уже пробовали!
Ответ №1:
Вы можете использовать оператор mysql BETWEEN:
$query = "
SELECT * FROM `table`
WHERE `record` BETWEEN {$myvar}-5 AND {$myvar} 5";
Примечание: BETWEEN
будет соответствовать записям между min
и max
, включая min
и max
. Имейте это в виду при разработке логики для вашего приложения.
Комментарии:
1. Кратко, легко и понятно для новичка вроде меня! Спасибо @Mark M!
Ответ №2:
Попробуйте это
SELECT *
FROM `table_name`
WHERE `field` <= your_variable 5
AND `field` >= your_variable-5
Комментарии:
1. @bereal Я имею в виду, что 123 хранится в пользовательской переменной, я привожу только пример для записи константы здесь
Ответ №3:
SELECT * FROM `table_name`
WHERE `field_name` BETWEEN (123-4) AND (123 4)
In generalized form as below.
$myvar = 123;
$difference = 5;
$sql = "SELECT * FROM `table_name`
WHERE `field_name` BETWEEN ($myvar - $difference 1) AND ($myvar $difference -1)";
Объяснение:
-> Как уже упоминалось, разница должна быть меньше 5. НЕ МЕНЬШЕ ИЛИ РАВНО 5.
Допустим, требуемые nos равны x.
123-x < 5 => 118 < x => 119,120,121,122,123 x-123 > 5 => x > 128 => 127,126,125,124,123
Следовательно, x может быть от 119 до 127.
=>(123-5) 1 < x < (123 5) -1
Надеюсь, это объяснение разъясняет sql, который я написал выше.
Прокомментируйте, если это не решит вашу проблему.
Комментарии:
1. Спасибо, очень хорошее решение, но я нашел более простое. 1