我试图形成一个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 |
+------+--------------------+
1条答案
按热度按时间2j4z5cfb1#
可能不需要递归查询。
db<>fiddle