如何在mySQL中搜索已知范围内的值

Asked
Viewd744

0

假设我有这样的查询:

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

那太好了,效果很好。但是,假设我有一个50个场所编号的列表。在不必写50个不同OR的情况下,有没有一种简便的方法?

谢谢!

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,但是我不确定为什么它是“最佳”的。

    ChssPly76November 13, 2009 20:49
  • 好吧,如果这是从应用程序中调用的,那么在查询中具有可以设置的变量比将其内联更好,这就是我要说的。如果您在查询分析器或SQLYog中运行查询,那么编写它的方式就很好了。

    ZoidbergNovember 13, 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的一部分?邓诺。

编辑:将双引号更改为单引号。

0

使用IN关键字:... WHERE venue IN (2, 3, 5, 7, 11, ...) ;