PostgreSQL获取阻止和阻止用户的用户名

问题描述 投票:0回答:1

我正在尝试获取阻止和阻止用户的用户名,但我得到一个空数组。

这就是我尝试过的:

select pid, 
   usename, 
   pg_blocking_pids(pid) as blocked_by, (select usename from 
pg_stat_activity where pid=ANY(pg_blocking_pids(pid)))
from pg_stat_activity
where cardinality(pg_blocking_pids(pid)) > 0;

嵌套的select返回[null]。

这就是如果我查询选择手动插入像这样的pid值

select usename from pg_stat_activity where pid=ANY(pg_blocking_pids(14648));

我得到了我正在寻找的价值。

sql postgresql nested pid
1个回答
0
投票

我认为你需要一个相关条款:

select sa.pid, sa.usename, 
       pg_blocking_pids(sa.pid) as blocked_by,
       (select sa2.usename
        from pg_stat_activity sa2
        where sa2.pid = ANY(pg_blocking_pids(sa.pid)))
from pg_stat_activity sa
where cardinality(pg_blocking_pids(sa.pid)) > 0;

如果您收到错误声明子查询返回多行,您将知道这是有效的。在这种情况下,将array_agg()添加到子查询中。

© www.soinside.com 2019 - 2024. All rights reserved.