mariadb 连接以前所有行,直到当前行

72qzrwbm  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(125)

我试图形成一个mysql查询,其中我想将所有以前的值串接起来,直到当前行-1。

select * from a;
+------+
| id   |
+------+
|    1 |
|    3 |
|    4 |
+------+

Desired o/p

+------+============
| id   |concat_prev_to_cur
+------+============
|    1 |null
|    3 |1
|    4 |1,3
+------+============

仅使用SELECT是否可以实现此目的
试过了,但不起作用
with recursive b as (select id from a union all select concat(a.id,',',b.id) from b join a on a.id=b.id) select * from b;
更新:这似乎接近所需的输出

With b as (Select id, row_number() Over(order by id) r from a) select c.id,group_concat(b.id) from b join b c on b.r < c.r group by c.r ;
+------+--------------------+
| id   | group_concat(b.id) |
+------+--------------------+
|    3 | 1                  |
|    4 | 1,3                |
+------+--------------------+
2j4z5cfb

2j4z5cfb1#

可能不需要递归查询。

SELECT id, (
    SELECT GROUP_CONCAT(id) AS ids
    FROM a AS agg 
    WHERE agg.id < a.id
) AS ids
FROM a

db<>fiddle

相关问题