使用不同的参数postgresql多次执行相同的查询

Execute same query multiple times with different parameter postgressql

我不知道如何轻松解释我需要做什么,但我会尝试。

假设我有一个用户 table 和 5 个用户。

id   name
1    Steve
2    Pat
3    Robin
4    Carl
5    Sarah

而不是只做一个 select * from users 我需要做这个不同的和更困难的。

我需要构建一个查询,为用户 table 中的每一行运行一个带有参数(名称)的查询,然后给我与 select * from users

相同的输出

我知道这听起来很奇怪,但这是我真正需要做的..

所以我想要发生的是:

  1. 我需要遍历用户 table 以找出有多少行。 (5) -这就是我要执行查询的次数。

  2. 每次执行查询时,我都需要更改 where 子句中的名称。第一次执行 = Steve,第二次执行 = Pat 等等。

  3. 最后我只想要一个输出,所以我需要合并结果。

如果我手动执行此操作,它将如下所示:

Select id, name from users where name = 'Steve'
union all 
Select id, name from users where name = 'Pat'
union all
Select id, name from users where name = 'Robin'
union all 
Select id, name from users where name = 'Carl'
union all
Select id, name from users where name = 'Sarah'

在我的实际情况下,我需要单独的查询,因此 in ('Steve', 'Pat') 或类似的解决方案将不起作用。

希望您明白我在寻找什么,如果您有任何问题,请提问。我正在使用 postgres v.10

这应该会如您所愿。

DO $$

DECLARE
    var_req TEXT;

    rec_key record;
    cur_key CURSOR FOR SELECT distinct name from users;

BEGIN

    open cur_key;

    
    loop
        fetch cur_key into rec_key;

        EXIT WHEN NOT FOUND;
var_req := '
insert into your_output_table
    select id, name from users
    where name = '''||rec_key.name||'''
;
';

execute var_req;    
        
    end loop;
    
    close cur_key;

END $$;