sql - 带有子组顺序的Mysql顺序结果
问题描述
例如我有桌子
ID | 参数1 | 参数2 |
---|---|---|
1 | C | 1 |
2 | 一个 | 2 |
3 | d | 3 |
4 | 一个 | 1 |
5 | b | 3 |
6 | 一个 | 3 |
7 | e | 4 |
对 param1¶m2 是唯一的
我想得到这个结果,其中任何具有相同 param1 的项目在自己的子组中按 id 分组
ID | 参数1 | 参数2 |
---|---|---|
1 | C | 1 |
2 | 一个 | 2 |
4 | 一个 | 1 |
6 | 一个 | 3 |
3 | d | 3 |
5 | b | 3 |
7 | e | 4 |
任何建议如何做到这一点?
解决方案
On the assumption that "groups" are ordered according to the MIN(ID)
in the "group", and that rows within a "group" are ordered according to the id
...
WITH
summarised AS
(
SELECT
*,
MIN(id) OVER (PARTITION BY param1) AS group_min_id
FROM
YourTable
)
SELECT
*
FROM
summarised
ORDER BY
group_min_id,
id
Using correlated sub-query in place of window function...
SELECT
*,
(SELECT MIN(id) FROM yourTable AS lookup WHERE lookup.param1 = yourTable.param1) AS group_min_id
FROM
yourTable
ORDER BY
group_min_id,
id
推荐阅读
- android - Buildozer 和 Gspread 问题,APK 不显示
- git - 如何使用(短)git commit hash 标记 Docker Compose 文件中的图像版本
- jquery - Target current dynamic element of each add
- c# - 调用 PDFStamper.set_Outlines 导致类型错误
- mongodb - 写入 MongoDB 副本集时出现 MongoSpark E11000 错误
- http - 控制网络摄像机的云台
- java - 如何在 Java 平台上大摇大摆地重新呈现“选择规范”?
- sql - 在 sql 查询中从 nvarchar 转换为 int 时转换失败
- javascript - 这个函数的运行时复杂度是多少?
- java - 如何使用 java 8 对列表的某些特定元素执行一些数学运算?