1

我想从数据库中获取最温暖和最冷的温度,但是ORDER BY data_temperature使用ASCorDESC并且SELECT MAX(data_temperature) FROM ...不起作用。我只10.0接受ORDER BY data_temperature DESC9.9接受ASCMAX(data_temperature)根本不显示任何数据。

当我在 phpMyAdmin 中对温度进行排序时,它显示相同的值,所以我必须向下滚动到最热的温度,即28.6. 最冷的温度是5.8

如下data_temperature所示:

data_temperature varchar(8) NOT NULL

如何从数据库中获取最热和最冷的温度?

4

3 回答 3

2

VARCHAR 不会以与数值相同的方式排序,因此您需要转换该值。

CAST(data_temperature AS DECIMAL(6,2))

如果需要,您可以在 ORDER BY 中执行此操作,或者您可以选择 MIN/MAX:

SELECT MAX(CAST(data_temperature AS DECIMAL(6,2)))
      ,MIN(CAST(data_temperature AS DECIMAL(6,2)))
FROM table
于 2013-06-15T12:52:43.320 回答
0

Varchar 是问题所在。将其转换为数字类型。

--Gets Max Temp
SELECT MAX(Cast(data_temperature AS FLOAT)) FROM TempTable
于 2013-06-15T12:53:07.500 回答
0

您需要将 varchar 转换为 numeric。假设您正在使用 sql server 尝试此查询,

select MAX(CAST(data_temperature AS Decimal(10,2)))
      ,MIN(CAST(data_temperature AS Decimal(10,2))) 
from temp

SQLFiddle 演示

于 2013-06-15T13:00:31.603 回答