Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用数组而不是单个值来执行MySQL查询?_Mysql_Sql - Fatal编程技术网

如何使用数组而不是单个值来执行MySQL查询?

如何使用数组而不是单个值来执行MySQL查询?,mysql,sql,Mysql,Sql,我有一个这样的值列表: [1000, 1100, 1200] SELECT * FROM test_table WHERE mz1_shifted BETWEEN (1000 - 1) AND (1000 + 1) 我想执行一个MySQL查询,查找数据库中某个列在每个值的容差值(比如+/-1)内的所有条目,如下所示: [1000, 1100, 1200] SELECT * FROM test_table WHERE mz1_shifted BETWEEN (1000 - 1) AN

我有一个这样的值列表:

[1000, 1100, 1200]
SELECT * 
FROM test_table 
WHERE mz1_shifted
BETWEEN (1000 - 1) AND (1000 + 1)
我想执行一个MySQL查询,查找数据库中某个列在每个值的容差值(比如+/-1)内的所有条目,如下所示:

[1000, 1100, 1200]
SELECT * 
FROM test_table 
WHERE mz1_shifted
BETWEEN (1000 - 1) AND (1000 + 1)
我是否必须执行多个查询,或者是否可以以某种方式传入数组:

....
BETWEEN ([1000, 1100, 1200] - 1) AND ([1000, 1100, 1200] + 1) #pseudocode

你会把你的身体和你的条件放在一起

SELECT * 
FROM test_table 
WHERE
mz1_shifted BETWEEN (1000 - 1) AND (1000 + 1)
OR
mz1_shifted BETWEEN (1100 - 1) AND (1100 + 1)
OR
mz1_shifted BETWEEN (1200 - 1) AND (1200 + 1)

您可以在每个范围的子句之间添加不同的
,并将它们与
串在一起<代码>位置(mz1_在(1000-1)和(1000+1)之间移动)或(mz1_在(1100-1)和(1100+1)之间移动)
。谢谢--这是最有效的方法吗?我将在PHP中构造一个查询生成器来附加'OR…'子句(如果是这样的话)。我想MySQL可能会有一种内置的方式来处理输入列表。你说的“高效”是什么意思?你写代码的效率如何?高效意味着它运行速度快?在最短执行时间方面高效:-)。。这将在具有数亿个entries的表上运行。如果希望它快速运行,则需要在WHERE子句中的列上具有索引。有关索引的重要性以及如何使用索引的介绍,请参见。