我有一个带有由距离索引的zipcodes的数组。现在我需要选择披萨店 基于拉链,有些事情如下:
ziparray[]
foreach loop
SELECT * FROM location WHERE food='pizza' and zip='ziparray[]'
//do stuff
拉链阵列可以在时间上长达30或40个拉链,这意味着30或40个查询。 有一个更好的方法吗?我希望找出存储过程 这样我就可以发送参数并让它发回数据(如果可以的话)。
答案 0 :(得分:4)
SELECT *
FROM location
WHERE food='pizza'
and zip IN(90210, 55555, etc..)
答案 1 :(得分:0)
如何使用IN运算符?
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
答案 2 :(得分:0)
您可能需要考虑将该数组转换为IN子句,以便查询 成为SELECT * FROM位置WHERE food ='pizza'和zip in('03750','03532',..其他50个邮政编码)
答案 3 :(得分:0)
您可以使用for循环构造查询。这是PHP中的一个例子:
$zipArray = array();
$query = "SELECT * FROM location WHERE food='pizza' AND ( 1=2";
foreach($zipArray as $zip){
$query .= "OR zip ='$zip' ";
}
$ query。=“)”;
1 = 2部分有点草率,你可以在foreach循环的每个添加结尾处添加一个OR,并使用一些函数来切断字符串的最后部分。