Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 返回错误值的SQL查询_Mysql_Datetime_Mariadb - Fatal编程技术网

Mysql 返回错误值的SQL查询

Mysql 返回错误值的SQL查询,mysql,datetime,mariadb,Mysql,Datetime,Mariadb,我有一个MariaDB天气数据库,每15分钟更新一次当前情况。我试图查询它以返回特定月份的最高温度。 当我用“selecttemp,datetime fromtable”查询它时,我得到了所有temp和记录的时间的列表。我可能会在一个小时左右的时间间隔15分钟内得到3-4个相同温度的记录。 为了得到一个具体的月份,我试着“选择temp,logdatetime FROM Monthly,其中logdatetime类似于'2020-01%'的订单由temp desc提供”,我得到了我期望的结果。(日

我有一个MariaDB天气数据库,每15分钟更新一次当前情况。我试图查询它以返回特定月份的最高温度。 当我用“selecttemp,datetime fromtable”查询它时,我得到了所有temp和记录的时间的列表。我可能会在一个小时左右的时间间隔15分钟内得到3-4个相同温度的记录。 为了得到一个具体的月份,我试着“选择temp,logdatetime FROM Monthly,其中logdatetime类似于'2020-01%'的订单由temp desc提供”,我得到了我期望的结果。(日期时间格式为YYYY-MM-DD HH:MM:ss)

临时雇员 日志日期时间 40.2 2020-01-04 16:15:00 40.1 2020-01-04 15:30:00 40.1 2020-01-04 17:00:00 40.1 2020-01-04 17:30:00 40.1 2020-01-31 16:15:00 40 2020-01-04 16:45:00 40 2020-01-31 16:00:00 使用

选择*
从logdatetime开始
其中logdatetime介于“2020-01-01 00:00:00”和“2020-01-31 23:59:59”之间
按温度说明订购
限制1
此查询选择2020年1月最高温度的行

如果存在许多具有相同最大温度值的行,则此查询将返回其中一行(通常,您无法预测将返回所有可能的行中的哪一行)。如果您需要某种确定的(例如,最后一个),那么您可以展开排序表达式(例如,直到
orderbytemp DESC,logdatetime DESC

如果需要具有最大温度的所有行,则必须首先在子查询中获取该最大值,然后在查询中使用该值进行行过滤。或者,在MySQL 8+版本中,您可以在CTE中使用RANK()函数。

Akina, 这很有效。非常感谢你的帮助。 Peter

logdatetime如“2020-01%”永远不要这样做。使用
logdatetime在'2020-01-01 00:00:00'和'2020-01-31 23:59:59'之间。如果我尝试“选择max(temp),logdatetime FROM Monthly WHERE logdatetime,如'2020-01%',则会犯逻辑错误。