MySQL的SELECT语句中值在一个查询
您好,我有以下MySQL查询:MySQL的SELECT语句中值在一个查询
SELECT sensorNumber, rangeStartTime, rangeEndTime, sensorLow, sensorAverage, sensorHigh
FROM rangeData
WHERE rangeStartTime >= 0
AND rangeEndTime <= 43200
AND (sensorNumber = 3)
ORDER BY sensorNumber;
我怎样才能使这样我可以抓住rangeStartTime外仅1前面和后面的值和rangeEndTime时间跨度?
所以在英语中这将被说成是:“在下午5点和晚上7点之间选择所有的值,也选择在下午5点之前的下一个值,下午7点之后的下一个值。
我尝试以下通过寻找其他的例子,但它没有工作:
SELECT sensorNumber, rangeStartTime, rangeEndTime, sensorLow, sensorAverage, sensorHigh
FROM rangeData
WHERE rangeStartTime >= 0
AND rangeEndTime <= 43200
AND rangeStartTime < 0 LIMIT 1
AND rangeEndTime > 43200 LIMIT 1
AND (sensorNumber = 3)
ORDER BY sensorNumber;
每个查询增加了等待时间5-10秒,所以我想做成一个查询此。
你可以做到这一点与3个查询,原来的一,一前一和一个为下一个简单的工会:
(SELECT sensorNumber, rangeStartTime, rangeEndTime, sensorLow, sensorAverage, sensorHigh
FROM rangeData
WHERE (rangeStartTime BETWEEN 0 AND 43200) AND (sensorNumber = 3))
UNION
(SELECT sensorNumber, rangeStartTime, rangeEndTime, sensorLow, sensorAverage, sensorHigh
FROM rangeData
WHERE (rangeStartTime < 0) AND (sensorNumber = 3)
ORDER BY rangeStartTime DESC
LIMIT 1)
UNION
(SELECT sensorNumber, rangeStartTime, rangeEndTime, sensorLow, sensorAverage, sensorHigh
FROM rangeData
WHERE (rangeStartTime > 43200) AND (sensorNumber = 3)
ORDER BY rangeStartTime ASC
LIMIT 1)
ORDER BY sensorNumber;
(BTW:是不需要的ORDER BY
如要查询只有一个sensorNumber
)
这是我会如何去实现这一目标。 –
如果包含LIMIT ORDER BY总是需要 – Strawberry
谢谢你,那是有效的。 sensorNumber值是字符串,所以有时它不仅仅是传感器#3,因此ORDER BY。 – NutellaAddict
也发布您的表定义和示例数据。 (或创建一个小提琴) – amdixon