gpt4 book ai didi

MySQL,排序 GROUP BY

转载 作者:行者123 更新时间:2023-11-30 22:52:17 25 4
gpt4 key购买 nike

我有一个表,其中包含一些值,以及根据另一个表中的关联 ID 获取该值的时间。

我希望检索该表中每个项目的最新值,然后按这些最新值排序。

这是一个 SQL fiddle ,http://www.sqlfiddle.com/#!2/0be99

这里是文本输出。

'历史'表

| HIST_ID | HIST_ITEM_ID | HIST_VALUE |  HIST_TIME |
|---------|--------------|------------|------------|
| 1 | 1 | 1 | 1420291000 |
| 2 | 1 | 2 | 1420292000 |
| 3 | 1 | 3 | 1420293000 |
| 4 | 1 | 5 | 1420294000 |
| 5 | 1 | 10 | 1420295000 |
| 6 | 1 | 50 | 1420296000 |
| 7 | 1 | 60 | 1420297000 |
| 8 | 1 | 77 | 1420298000 |
| 9 | 1 | 90 | 1420299000 |
| 10 | 1 | 101 | 1420300000 |
| 11 | 2 | 1 | 1420291000 |
| 12 | 2 | 3 | 1420292000 |
| 13 | 2 | 7 | 1420293000 |
| 14 | 2 | 9 | 1420294000 |
| 15 | 2 | 15 | 1420295000 |
| 16 | 2 | 21 | 1420296000 |
| 17 | 2 | 33 | 1420297000 |
| 18 | 2 | 35 | 1420298000 |
| 19 | 2 | 55 | 1420299000 |
| 20 | 2 | 91 | 1420300000 |

'项目'表

| ITEM_ID | ITEM_TITLE |
|---------|------------|
| 1 | ABCD |
| 2 | XYZ123 |

所以,我可以做类似...

select * from hist
inner join items on hist_item_id = item_id
group by hist_item_id
order by hist_value desc

但是,这会返回一个我无法订购的分组。我怎样才能订购这个分组?我在这里查看了其他类似的问题,但无法将他们的解决方案成功应用于我的查询以产生所需的结果。

这里期望的结果是返回。

HIST_ITEM_ID | ITEM_TITLE | HIST_VALUE |
|------------|------------|------------|
| 1 | ABCD | 101 |
| 2 | XYZ123 | 91 |

最佳答案

您可以使用join 来获取最近的历史记录项。然后您可以重新连接到历史表和项目表以获取更多信息:

select h.*, i.item_title
from (select hist_item_id, max(hist_id) as max_hist_id
from hist
group by hist_item_id
) hh join
hist h
on h.hist_id = hh.max_hist_id join
items i
on i.item_id = hh.hist_item_id;

Here是一个 SQL fiddle 。

关于MySQL,排序 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com