【问题标题】:MySQL: Ordering sets of ordered rows without dividing setsMySQL:排序有序行的集合而不划分集合
【发布时间】:2015-01-29 14:17:21
【问题描述】:

我有一个包含 entry_idedit_date 列的表。我应该使用什么查询来按 edit_date 组按 entry_id 分组的行进行排序?分组方式不是 SQL 术语。

现在我将尝试清理我想要的东西:

我有什么

entry_id    number
Entry 1 19
Entry 1 10
Entry 1 80
Entry 2 60
Entry 3 83
Entry 4 73
Entry 5 15
Entry 2 26
Entry 2 9
Entry 2 5
Entry 3 95
Entry 2 57
Entry 3 4
Entry 4 88
Entry 2 39
Entry 3 78
Entry 3 4

我需要什么:

entry_id    number
Entry 3 95  <- biggest in set
Entry 3 83  
Entry 3 78  
Entry 3 4   
Entry 3 4   
Entry 4 88  <- biggest in set
Entry 4 73  
Entry 1 80  <- biggest in set
Entry 1 19  
Entry 1 10  
Entry 2 60  <- biggest in set
Entry 2 57  
Entry 2 39  
Entry 2 26  
Entry 2 9   
Entry 2 5   
Entry 5 15

谢谢!

【问题讨论】:

  • ORDER BY entry_id, number DESC
  • @ElGavilan 谢谢,但应优先考虑 number 行。在您的情况下,除非 entry_id 相同,否则它将被忽略。
  • 您希望数字行按 entry_id 分组的降序排序,是吗?这将给你正是你所要求的。 Example
  • 否 @ElGavilan 仔细查看结果集。
  • 除非我没看错,否则您似乎希望 number 为每个 entry_id 按降序排序。所以所有 entry_id '3' 一起,按number 降序排列。这就是我给出的例子所做的。你在寻找不同的东西吗?您能否准确说明您希望结果集的外观?

标签: mysql sorting sql-order-by


【解决方案1】:

获得结果的一种方法是包含派生的“集合中最大”列。

如果你有这样的结果集:

_id number biggest
3   95     95
3   83     95
3   78     95
3   4      95
3   4      95
4   88     88
4   73     88 
1   80     80
1   19     80
1   10     80
2   60     60
2   57     60
2   39     60
2   26     60

然后你可以ORDER BY biggest DESC, _id DESC, number DESC

获得“最大集合”的一种方法是使用带有MAX(number) 聚合函数和GROUP BY _id 的查询,并将该查询用作内联视图,并执行连接操作。例如:

SELECT t._id
     , t.number
  FROM mytable t
  JOIN ( 
         SELECT m._id
              , MAX(m.number) AS biggest
           FROM mytable m
          GROUP BY m._id
       ) b
    ON b._id = t._id
 ORDER BY b.biggest DESC, t._id DESC, t.number DESC

内联视图查询 b 返回每个 _id 的“集合中最大的”数字。

【讨论】:

    【解决方案2】:

    ORDER BY entry_id, number DESC 将按降序排列number,按entry_id 分组。 entry_id 也会被排序。

    SqlFiddle

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      相关资源
      最近更新 更多