Java-MySQL查询where子句在将ID添加到time时失败
我希望搜索传感器事件数据库,并删除其时间戳等于或小于10秒且其传感器ID在已批准ID列表内的事件 当我仅使用时间参数运行查询时,结果集与预期一致,但当添加sensorID参数时,它似乎返回了满足sensorID要求的所有传感器事件,但忽略了时间戳要求 查询: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
"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
)"
成功了。你介意解释一下为什么需要这个吗?是由于多个或条件还是多个和?这是因为多个条件。当与和一起使用时,它们的布尔值应作为一个实体进行计算。这很有效。你介意解释一下为什么需要这个吗?是由于多个或条件还是多个和?这是因为多个条件。当与和一起使用时,它们的布尔值应作为一个实体进行计算。