Mysql:如何在不丢失组内个人行的情况下对组进行排序[关闭]

Posted

技术标签:

【中文标题】Mysql:如何在不丢失组内个人行的情况下对组进行排序[关闭]【英文标题】:Mysql: How do I order groups without losing individuals rows within groups [closed] 【发布时间】:2020-07-31 12:11:18 【问题描述】:

我在 phpmyadmin,我有数据:

query url score  
a www.google.com 3  
a www.facebook.com 2  
a www.google.com 1

我想按域对条目进行“分组”,然后按每个组的最高分对域组进行排序(降序)(cmets 中的一些人发现这个措辞更清晰:“按每个组的最高分排序降序”)所以我明白了:

query url score  
a www.google.com 3  
a www.google.com 1
a www.facebook.com 2  

尝试:按分数 desc 从表顺序中选择 *,url asc 不起作用。它给出(没有明显变化):

query url score  
a www.google.com 3  
a www.facebook.com 2  
a www.google.com 1

我显然没有清楚地表达我的烦恼。如果你能看到我在哪里可以说得更清楚,请告诉我。

作为参考,我在这里重新提出了这个问题,它有一个公认的答案:How do I order groups by each group's highest value

【问题讨论】:

删除组?... 你不想分组,你想排序。 (GROUP BY 将符合分组条件的多条记录压缩为一条 - 绝对不是您在此处想要的。) 为什么还需要GROUp,松手就可以了 GROUP BY 不是这样工作的,您可能需要两种排序,尝试使用 select * from table order by var1 asc, var2 desc(将首先按 var1 排序,然后按 var2) 大家好。我已按问题更新以显示尝试双重订单时会发生什么。它不按 var1 分组。我已经补充说我正在使用 phpmyadmin,这有关系吗? 【参考方案1】:

根据你预期的输出,你根本不需要分组,只需要一个多列order by子句:

SELECT   *
FROM     mytable
ORDER BY var1 ASC, var2 DESC

【讨论】:

嘿穆雷尼克。我已按问题更新以显示尝试双重订单时会发生什么。它不按 var1 分组。不知道可能出了什么问题,对每个人来说,你的建议应该可行。我还补充说我正在使用 phpmyadmin,不确定这是否相关。 @scon 您能否再次编辑您的问题并添加一些示例数据以及您想要获得的结果?没有它,恐怕您的编辑并不能真正解释问题 已经完成了。如果还不清楚,请告诉我。可能会添加更多条目/行..【参考方案2】:

如果我理解,您希望先按 var1 作为 asc,然后按 var2 作为 desc。

这个呢:

SELECT * FROM table ORDER BY var1 ASC, var2 DESC;

【讨论】:

嘿 adrainosmateus,如其他地方所述:我已经更新了您建议的解决方案的问题。它不适合我。不确定我在 phpmyadmin 上的事实是否相关..

以上是关于Mysql:如何在不丢失组内个人行的情况下对组进行排序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失 SQL 中的任何行的情况下合并两个表?

按时间戳对组内的行进行排序

如何在不使用乘法的情况下对数字进行平方?

如何在不考虑最后一个空白行的情况下对 jqGrid 进行排序

如何在不改变原始数组的情况下对数组进行排序?

如何在不使用 Spark SQL 的情况下对 Spark 中的数据帧进行排序?