簡體   English   中英

MySQL max()-不返回max()值

[英]MySQL max() - not returning max() value

我有一個查詢,我想在給定的傳感器ID( sensorID )范圍內返回idevent中的最高id值,但是該查詢未返回最高值。

當我運行查詢時減去max()語句的結果:

mysql> SELECT * FROM events WHERE timestamp BETWEEN "2015-03-09 10:45:35" - INTERVAL 4000 SECOND AND "2015-03-09 10:45:35" 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);
+---------+---------------------+----------+-------+
| idevent | timestamp           | sensorID | event |
+---------+---------------------+----------+-------+
|  117794 | 2015-03-09 10:14:58 | 34035434 |     9 |
|  117795 | 2015-03-09 10:15:03 | 34035508 |     9 |
|  117796 | 2015-03-09 10:15:17 | 34035508 |     1 |
+---------+---------------------+----------+-------+
3 rows in set (0.00 sec)

max()語句作為HAVING子句添加時給出的結果:

mysql> SELECT * FROM events WHERE timestamp BETWEEN "2015-03-09 10:45:35" - INTERVAL 4000 SECOND AND "2015-03-09 10:45:35" 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) HAVING max(idevent);
+---------+---------------------+----------+-------+
| idevent | timestamp           | sensorID | event |
+---------+---------------------+----------+-------+
|  117794 | 2015-03-09 10:14:58 | 34035434 |     9 |
+---------+---------------------+----------+-------+
1 row in set (0.00 sec)

為什么不返回最新值?

用作,使用順序為

SELECT * FROM events WHERE timestamp BETWEEN "2015-03-09 10:45:35" - INTERVAL 4000 SECOND AND "2015-03-09 10:45:35" 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)
 order by idevent desc

這可以通過order by limit來完成,因此所有您需要在給定的第一個查詢的末尾添加以下內容

order by idevent desc limit 1

我認為您需要以下查詢:

SELECT MAX(idevent) FROM events WHERE timestamp BETWEEN "2015-03-09 10:45:35" - INTERVAL 4000 SECOND AND "2015-03-09 10:45:35" AND sensorID IN ('34035434', '34035492', '34035426', '34035482', '34035125', '34035498', '34035508', '34035444', '34035418', '34035466', '34035128', '34035119', '34035448', '34037294', '34035549') GROUP BY idevent;

去這里http://www.w3schools.com/sql/sql_func_max.asp

查詢是錯誤的。

嘗試這個:

SELECT MAX(Price) FROM events WHERE timestamp BETWEEN "2015-03-09 10:45:35" - INTERVAL 4000 SECOND AND "2015-03-09 10:45:35" 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM