#mysql #sql
#mysql #sql
Вопрос:
Если я хочу запустить инструкцию SQL, например
"SELECT integername from tblintegerlist where integerlist ..."
У меня есть список чисел, таких как
integername
1
2
3
4
5
итак, мне нужны результаты для / — 1 поиска, поэтому для ‘4’ я бы получил строки 3,4,5 в качестве результатов.
Комментарии:
1. Вы не определяете, что такое «integerlist».
Ответ №1:
Если я правильно вас понимаю
where integername >= n-1 AND integername <= n 1
Ответ №2:
Похоже, вы хотите написать SQL с предложением > и < .
SELECT integername FROM tbintegerlist
WHERE integername >= @val - 1 AND integername <= @val 1
Вы также можете предпочесть это:
SELECT integername FROM tbintegerlist
WHERE integername BETWEEN @val - 1 AND @val 1
Но вы должны не забыть проверить свою базу данных, чтобы увидеть, являются ли предложения «between» включающими или исключающими. Для некоторых баз данных «между» означает «больше или равно меньшему значению и меньше большего значения».
Комментарии:
1.
Between
в MySQL включено.2. Oracle BETWEEN также включает.
3. Значение PostgreSQL МЕЖДУ включительно: postgresql.org/docs/8.2/static/functions-comparison.html
Ответ №3:
SELECT integername
FROM tblintegerlist
WHERE (integername-<variable>) BETWEEN -1 AND 1
Комментарии:
1. Это решение действительно кажется более приятным, потому что оно позволяет избежать повторения имени переменной, но применение вычисления к
integername
, скорее всего, не позволит серверу использовать индекс в этом столбце, если он есть.