我有两列id
和resolvedId
。现在我想按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
答案 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/1和http://sqlfiddle.com/#!2/7fb2ce/4
答案 1 :(得分:0)
根据我的理解,如果没有对数据集的进一步限制,就无法获得所要求的内容。假设您有以下数据:
id resolvedId
1 4
2 3
3 4
按id desc
订购只会导致停用resolvedId
。