MYSQL SELECT 最近的 id 和 ORDER BY

标签 mysql

我想做的是获取每个 resort_id 的最新结果,然后是 ORDER BY snow_depth。前两部分我已经完成了。排序是不起作用的部分。

到目前为止我有什么

SELECT * FROM snow_conditions t1

NATURAL JOIN ( SELECT MAX(weather_id) AS weather_id, resort_id FROM snow_conditions 
GROUP BY resort_id ) t2 

ORDER BY snow_depth DESC

weather_id 是自动递增的,所以我用它代替 save_time 以减少计算资源。

让我困惑的是结果以 snow_depth 的一些奇怪的偏序出现。

+-----------+------------+------------+
| resort_id | weather_id | snow_depth |
+-----------+------------+------------+
|       888 |    827     |       90   |
|       943 |    835     |       90   |
|       860 |    839     |       75   |
|       17  |    828     |       71   |
|       26  |    826     |       70   |
|       9   |    852     |       60   |           
|       16  |    831     |       292  |
|       296 |    862     |       170  |
|       20  |    843     |       168  |
|       5   |    842     |       165  |
|       36  |    838     |       160  |
|       17  |    17      |       0    |
|       26  |    26      |       0    |
+-----------+------------+------------+

什么时候真的应该是这样

+-----------+------------+------------+
| resort_id | weather_id | snow_depth |
+-----------+------------+------------+
|       16  |    831     |       292  |
|       296 |    862     |       170  |
|       20  |    843     |       168  |
|       5   |    842     |       165  |
|       36  |    838     |       160  |
|       888 |    827     |       90   |
|       943 |    835     |       90   |
|       860 |    839     |       75   |
|       17  |    828     |       71   |
|       26  |    826     |       70   |
|       9   |    852     |       60   |           
|       17  |    17      |       0    |
|       26  |    26      |       0    |
+-----------+------------+------------+

我已经尝试了几乎所有可以在此处找到的相关的 MySQL 查询,但它们都遇到了相同的问题或无法正常工作。

编辑:我应该提到这个表包含数千行,每个 resort_id 有数百行。这是这样做的,所以我可以用它来生成降雪历史。

最佳答案

我认为你应该检查你的数据库中snow_depth 的数据类型,它不应该是varchar。你的结果听起来像是 varchar 所以如果它是然后将它更改为 int 或任何 numeric 类型

关于MYSQL SELECT 最近的 id 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721056/

相关文章:

mysql - 此插入中的 'X' 是什么 > X'3C2F756C3E'

MySQL:插入错误 "Cannot be NULL"-- DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

sql - 如何合并两个 MySQL 表?

mysql - 如何在 MySQL 函数中引发错误

mysql - INNER JOIN DISTINCT 与 MySQL

mysql在当前行增加值并为每组重置

php - Mysql中的"Equity"系统

php - 如何将两个不同表中的两个值输出到 href?

php - MySQL - 选择而不是更新进行测试

php - 使用不同尺寸的图像制作照片网格