Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Java-MySQL查询where子句在将ID添加到time时失败_Java_Mysql_Where - Fatal编程技术网

Java-MySQL查询where子句在将ID添加到time时失败

Java-MySQL查询where子句在将ID添加到time时失败,java,mysql,where,Java,Mysql,Where,我希望搜索传感器事件数据库,并删除其时间戳等于或小于10秒且其传感器ID在已批准ID列表内的事件 当我仅使用时间参数运行查询时,结果集与预期一致,但当添加sensorID参数时,它似乎返回了满足sensorID要求的所有传感器事件,但忽略了时间戳要求 查询: "SELECT * FROM events WHERE timestamp BETWEEN " + visionTime + " - INTERVAL 10 SECOND AND " + visionTime + " AND sensorI

我希望搜索传感器事件数据库,并删除其时间戳等于或小于10秒且其传感器ID在已批准ID列表内的事件

当我仅使用时间参数运行查询时,结果集与预期一致,但当添加sensorID参数时,它似乎返回了满足sensorID要求的所有传感器事件,但忽略了时间戳要求

查询:

"SELECT * FROM events WHERE timestamp BETWEEN " + visionTime + " - INTERVAL 10 SECOND AND " + visionTime + " AND sensorID = 34035434 OR sensorID = 34035492 OR sensorID = 34035426 OR sensorID = 34035482 OR sensorID = 34035125 OR sensorID = 34035498 OR sensorID = 34035508 OR sensorID = 34035444 OR sensorID = 34035418 OR sensorID = 34035466 OR sensorID = 34035128 OR sensorID = 34035119 OR sensorID = 34035448 OR sensorID = 34037294 OR sensorID = 34035549;"

对于
条件,需要使用括号,如下所示。原因是首先它将检查
条件,并在其后添加多个或不带括号,并且将满足其中一个或条件,从而完全忽略前面的

所以它更像是

select * from table where col='a' and col2 = 'b' and (col3 = 'c' or col3 = 'd') 
上面将返回
col='a'
col2='b'
col3
c或d

查询中的相同内容应为

"SELECT * FROM events 
   WHERE timestamp BETWEEN " + visionTime + " - INTERVAL 10 SECOND 
   AND " + visionTime + "
   AND ( sensorID = 34035434 
    OR sensorID = 34035492 
    OR sensorID = 34035426 
    OR sensorID = 34035482 
    OR sensorID = 34035125 
    OR sensorID = 34035498 
    OR sensorID = 34035508 
    OR sensorID = 34035444 
    OR sensorID = 34035418 
    OR sensorID = 34035466 
    OR sensorID = 34035128 
    OR sensorID = 34035119 
    OR sensorID = 34035448 
    OR sensorID = 34037294 
    OR sensorID = 34035549 
  )"

对于
条件,需要使用括号,如下所示。原因是首先它将检查
条件,并在其后添加多个或不带括号,并且将满足其中一个或条件,从而完全忽略前面的

所以它更像是

select * from table where col='a' and col2 = 'b' and (col3 = 'c' or col3 = 'd') 
上面将返回
col='a'
col2='b'
col3
c或d

查询中的相同内容应为

"SELECT * FROM events 
   WHERE timestamp BETWEEN " + visionTime + " - INTERVAL 10 SECOND 
   AND " + visionTime + "
   AND ( sensorID = 34035434 
    OR sensorID = 34035492 
    OR sensorID = 34035426 
    OR sensorID = 34035482 
    OR sensorID = 34035125 
    OR sensorID = 34035498 
    OR sensorID = 34035508 
    OR sensorID = 34035444 
    OR sensorID = 34035418 
    OR sensorID = 34035466 
    OR sensorID = 34035128 
    OR sensorID = 34035119 
    OR sensorID = 34035448 
    OR sensorID = 34037294 
    OR sensorID = 34035549 
  )"

成功了。你介意解释一下为什么需要这个吗?是由于多个
条件还是多个
?这是因为多个
条件。当与和一起使用时,它们的布尔值应作为一个实体进行计算。这很有效。你介意解释一下为什么需要这个吗?是由于多个
条件还是多个
?这是因为多个
条件。当与和一起使用时,它们的布尔值应作为一个实体进行计算。