Оператор MySQL, если число меньше переменной php

#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";
 

Смотрите демонстрацию mysql

Примечание: BETWEEN будет соответствовать записям между min и max , включая min и max . Имейте это в виду при разработке логики для вашего приложения.

Комментарии:

1. Кратко, легко и понятно для новичка вроде меня! Спасибо @Mark M!

Ответ №2:

Попробуйте это

 SELECT *
FROM `table_name`
WHERE `field` <= your_variable 5
  AND `field` >= your_variable-5
 

Check SQL Demo

Комментарии:

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