如何按一列排序并使具有相同第二列的元素连续?

时间:2013-08-04 09:17:40

标签: mysql

我有两列idresolvedId。现在我想按id desc排序列,但希望具有相同resolvedId的列一个接一个地出现。 到目前为止尝试了group by但我的理解是它只能用于汇总函数,例如sum等。在mysql中这样做的任何简单方法? 我的另一个选择是将它们作为单独的结果集放入php中,然后根据resolvedId进行插入。 id是唯一的auto_increment,resolveId将成为id之一。 样本数据

id| name| resolvedId
1   nam    1
2   bam    4
3   sam    3
4   dam    4
5   ham    3
6   ram    4

想要输出

id|  name|  resolvedId
6    ram    4
4    dam    4
2    bam    4
5    ham    3
3    sam    3
1    nam    1

样本数据2

id| name| resolvedId
1   nam    1
2   bam    4
3   sam    3
4   dam    4
5   ham    3
6   ram    1

想要输出

id|  name|  resolvedId
6    ram    1
1    nam    1
5    ham    3
3    sam    3
4    dam    4
2    bam    4

2 个答案:

答案 0 :(得分:3)

这是一个可能足够的解决方案:

select tbl.* from
    ( select MAX(id) as m, resolvedId from tbl GROUP BY resolvedId) as driver
    JOIN tbl 
    ON driver.resolvedId = tbl.resolvedId 
    ORDER BY driver.m desc, tbl.id desc, driver.resolvedId;

与您合作最新的示例http://sqlfiddle.com/#!2/e3a2f/1http://sqlfiddle.com/#!2/7fb2ce/4

答案 1 :(得分:0)

根据我的理解,如果没有对数据集的进一步限制,就无法获得所要求的内容。假设您有以下数据:

id    resolvedId
1              4
2              3
3              4

id desc订购只会导致停用resolvedId