mysql - 如何选择特定日期的最高值

标签 mysql datetime select

如何选择特定日期的最高值?

我的数据如下:

id,value_id,sensor_id,value,time(datetime)     
 1,123,gas,10,2018-01-14 01:00:00
 1,123,gas,20,2018-01-14 02:00:00

我尝试了很多查看事物(也使用 MAX),例如:

SELECT value
FROM table
WHERE sensor_id = "123"
AND value_id = "gas"
AND time = "2018-01-14"
order by time;
limit 1;

我需要选择在特定日期记录的特定数据的最高值(不是间隔,即 2017-01-01 -> 2017-01-03,仅适用于该指定日期:2018-01-14)。

但是我收到错误或错误的值。

最佳答案

尝试这个查询:

SELECT value 
FROM table
WHERE sensor_id = '123'
AND value_id = 'gas'
AND time >= '2018-01-14'
AND time < '2018-01-15'
ORDER BY value DESC
LIMIT 1;

使用单引号而不是双引号。

当您想要获得最高值时,您应该对列进行降序排序 (DESC)。如果它是最高值,请不要按时间排序,在这种情况下您可以选择 max(value),因为它是返回的字段,那么你就不需要订购依据和限制。

时间的事情我更喜欢做这个替换,因为其他方式它不能与时间戳一起工作,而这种方式它将始终工作,无论列的类型是日期还是时间戳。

关于mysql - 如何选择特定日期的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254473/

相关文章:

datetime - 将日期时间集合转换为 yyyy-mm-dd

php - mysql按分数/点数对用户进行排名

php - 如何从 MySQL 中的另一个表过滤的一个表中选择行?

mysql - 将分组日期格式化为可读日期

MySQL将同一表中不同列的多值字符串拆分到新表中

MySQL选择不在特定日期和时间的id

MySQL SELECT 仅从具有 DATETIME 的行中选择 AVAILABLE 月份

php - 查询以获取每个类别中的项目数(甚至显示包含 0 个项目的空类别)

Mysql将表格从长格式转换为宽格式

php - 内部连接性能慢