首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,分组排序依据

问MySQL,分组排序依据
EN

Stack Overflow用户
提问于 2015-01-08 10:55:54
回答 2查看 36关注 0票数 1

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

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

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

这是文本输出。

‘'hist’表

代码语言:javascript
复制
| 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 |

‘'items’表

代码语言:javascript
复制
| ITEM_ID | ITEM_TITLE |
|---------|------------|
|       1 |       ABCD |
|       2 |     XYZ123 |

所以我可以做一些像这样的事情。

代码语言:javascript
复制
select * from hist
inner join items on hist_item_id = item_id
group by hist_item_id
order by hist_value desc

但是,这将返回一个我无法排序的分组。如何对此分组进行排序?我在这里看了一下其他类似的问题,但无法成功地将他们的解决方案应用到我的查询中,以产生期望的结果。

这里期望的结果是返回。

代码语言:javascript
复制
HIST_ITEM_ID | ITEM_TITLE | HIST_VALUE |
|------------|------------|------------|
|          1 |       ABCD |        101 |
|          2 |     XYZ123 |         91 |
EN

回答 2

Stack Overflow用户

发布于 2015-01-08 11:01:17

您可以使用join来获取最新的历史项目。然后,您可以连接回历史表和项目表,以获取其他信息:

代码语言:javascript
复制
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。

票数 0
EN

Stack Overflow用户

发布于 2015-01-08 11:16:42

您应该使用MAX函数并按项id分组。它看起来像这样:

代码语言:javascript
复制
SELECT i.item_id, i.item_title, MAX(h.hist_value)
FROM items AS i
INNER JOIN hist AS h
  ON i.item_id = h.hist_item_id
GROUP BY i.item_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27832215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档