这个问题已经在这里有了答案 :
使用WHERE子句将数组传递给查询 (18个答案)
5年前关闭。
我在使用WHERE子句中的数组进行SQL查询时遇到问题。
例如:
我的阵列:
$myarray[1] = "hi";
$myarray[2] = "there";
$myarray[3] = "everybody";
我的MySQL陈述:
SELECT * FROM myTable WHERE title="".$myarray[]."'
有什么办法可以实现?我自己这样解决了它:
for(...) {
$where = $where." title="".$myarray[$count]."' OR ";
}
$where = substr($where , 0, -3);
.....
SELECT * FROM myTable WHERE ".$where."
但是,如果我的数组中有成千上万个条目,那么SQL语句将太大且太慢,对吗?
谢谢
您可以使用mysql的IN函数
编辑:正如amosrevira所说,您需要对数组中的字符串进行转义。
$myarray[1] = "'hi'";
$myarray[2] = "'there'";
$myarray[3] = "'everybody'";
$newarray = implode(", ", $myarray); //makes format 'hi', 'there', 'everybody'
SELECT * FROM myTable WHERE title IN ($newarray);
问题内容: 在两个具有相同列名的表上创建VIEW时,如何避免MySQL中的dup列名错误,如下所示 问题答案: 使用别名作为列名
假设我有一个表,它有两列X1和X2,其中X1总是小于X2。每行构成一定的范围(X1,X2)。可能有几行的X1/X2范围重叠,从而产生更大的范围(X1n,X2m)。 有没有办法使用标准SQL查询来查找所有这些范围? 例如,该表可能如下所示: 预期产出将是: 我非常感谢您在正确方向上对我们的帮助。 我正在使用sqlite。
问题内容: 我正在使用内部联接在MySQL中进行选择: 有时我会在结果中得到tblcaritem.caritemid的副本。我想确保永远不要复制tblcaritem.caritemid,但是我该怎么做?我尝试使用DISTINCT,但它只是检查了整行是否重复,我只想检查tblcaritem.caritemid,有没有办法? 抱歉,如果我不能很好地解释它,那么我并不是最好的SQL查询。 问题答案:
问题内容: 我正在尝试对与php数组中的值匹配的行进行sql查询。 本质上我有一个像 并希望执行单个SQL查询以获取与该数组匹配的行 是否有捷径可寻?还是我必须手动构造查询字符串? 问题答案: 使用爆破功能,即
当我要执行以下查询时: 我得到了错误: 消息102,级别15,状态1,第1行“,”附近的语法不正确。 编辑: 我要删除klantId 3。
val celllookuprdd:[celltype,cellname](cellname有4个值) 预期结果:[id,1001的位置,1001的日期1,2009年的第一个转数日期,2009年的最后一个转数日期,2009年的第一个PPM日期,2009年的最后一个PPM日期] 这是我当前的查询(在这里,我还指示了一个可选的eventtype作为第一列;但是在我以前的event2009RDD中,我选