在变量 plsql 中获取逗号分隔的 ID

Get Comma Separated Ids in variable plsql

我有一个table这样的

id  |  Name
===========
1   |  A
2   |  A
3   |  A
4   |  B
5   |  B
6   |  C

我正在写 select id from tbl where name = "A", 我想得到所有三个 id (1,2,3) 像这样在一个变量中用逗号分隔然后我想在另一个具有 IN 子句的 select 查询中使用该变量,有什么帮助吗?

正如其他人指出的那样,使用 listagg() 应该可以解决问题:

SELECT listagg(id, ',') WITHIN GROUP (ORDER BY id) as concatenation 
FROM mytable 
WHERE name = 'A'

这是有效的:

create table ns_1111(col1 number,col2 varchar(20));

insert into ns_1111 values(1,'A');
insert into ns_1111 values(2,'A');
insert into ns_1111 values(3,'A');
insert into ns_1111 values(4,'B');
insert into ns_1111 values(5,'B');
insert into ns_1111 values(6,'C');
SELECT * FROM ns_1111;


select * from (SELECT LISTAGG(col1, ', ') WITHIN GROUP (ORDER BY col1)
FROM ns_1111 group by col2) where rownum<=1   ;

输出:

1, 2, 3