首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL max() -不返回max()值

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

Stack Overflow用户
提问于 2015-03-09 10:51:28
回答 4查看 2K关注 0票数 0

我有一个查询,希望在idevent中返回位于传感器id (sensorID)给定范围内的最高ID值,但是查询没有返回最高值。

运行查询时的结果减去max()状态:

代码语言:javascript
复制
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子句时给出的结果:

代码语言:javascript
复制
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)

为什么这不返回最新的价值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-09 10:59:54

这可以用order by limit完成,所以您只需在给定的第一个查询结束时添加以下内容

代码语言:javascript
复制
order by idevent desc limit 1
票数 1
EN

Stack Overflow用户

发布于 2015-03-09 10:58:04

使用as,使用命令由

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2015-03-09 10:59:59

我想你需要这个查询:

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28940191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档