我想做的是获取每个 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/