1

我有两列idresolvedId. 现在我想对列进行排序,id desc但希望具有相同的列一个接一个resolvedId地出现。到目前为止尝试 group by 但我的理解是它只能用于 sum 等聚合函数。在 mysql 中有什么简单的方法可以做到这一点?我的另一个选择是将它们作为单独的结果集放入 php 中,然后基于resolvedId 插入。id 是唯一的 auto_increment,resolvedId 将是 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
4

2 回答 2

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

于 2013-08-04T11:18:50.073 回答
0

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

id    resolvedId
1              4
2              3
3              4

订购它id desc只会导致停产resolvedId

于 2013-08-04T09:28:24.577 回答