Как искать значение в известном диапазоне в mySQL

Asked
Viewd744

0

Допустим, у меня есть такой запрос:

 SELECT * FROM table_name WHERE venue = "1" OR venue = "10"
 

Отлично, отлично работает.Но допустим, у меня есть список из 50 номеров мест.Есть ли простой способ сделать это, когда мне не нужно выписывать 50 разных операций?

Спасибо!

5 ответов

4

Вместо этого можно использовать "IN" :

 SELECT * FROM table_name WHERE venue IN (1, 12, 23, ... 150)
 
1
 SELECT * FROM table_name WHERE venue IN ('1','10')
 

Лучшим ответом будет

 SELECT * FROM table_name WHERE venue IN @myVar
 

Где @myVar - это список, заданный в запросе,

  • Невозможно установить параметры IN как переменную подготовленного оператора.Вы, конечно, можете добавить @myVar к тексту запроса, но тогда я не уверен, почему это будет «лучше».

    ChssPly7613 ноября 2009, 20:49
  • Что ж, если бы это было вызвано из приложения, иметь переменную в запросе, которую вы можете установить, лучше, чем вставлять ее в строку, это все, что я пытаюсь сказать.Если вы выполняете запрос в анализаторе запросов или SQLYog, то способ, которым вы его написали, был бы прекрасен.

    Zoidberg13 ноября 2009, 20:52
0

Не уверен, поддерживает ли MySQL это ...

Используйте оператор BETWEEN:

 SELECT *
  FROM table
  WHERE venue BETWEEN '1' and '50';
 

Хотя при работе с символьной строкой может потребоваться более явная типы данных:

 SELECT *
  FROM table
  WHERE venue BETWEEN '1' and '9'
     OR venue BETWEEN '10' and 50';
 

Конечно, BETWEEN не поможет, если ваш список чисел не является непрерывным.

0

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

 SELECT * FROM table_name WHERE venue in ('1', '10')
 

Я знаю, что это работает в Oracle.Оператор "in", вероятно, является частью стандартного SQL?Не знаю.

edit: двойные кавычки заменены на одинарные

0

Используйте ключевое слово IN: ... WHERE venue IN (2, 3, 5, 7, 11, ...) ;