gpt4 book ai didi

postgresql - 在 PostgreSQL WHERE 子句中,如何查找 ID 不在数组中的所有行?

转载 作者:行者123 更新时间:2023-11-29 11:55:52 25 4
gpt4 key购买 nike

好的,我有一个存储过程...如何查找 ID 不在数组中的所有行? (请记住,我使用的是在创建存储过程时动态创建的 PostgreSQL 数组

示例:

|  people   |
-------------
| id | Name |
-------------
| 1 | Bob |
| 2 | Te |
| 3 | Jack |
| 4 | John |

数组有 somePGArray := [1,3],所以伪查询看起来像这样:

SELECT * FROM people WHERE id NOT IN (somePGArray)

查询结果:

|  people   |
-------------
| id | Name |
-------------
| 2 | Te |
| 4 | John |

作为奖励,我也不知道如何创建数组并向其附加 ID,因此如果您有一个快速提示如何执行此操作,那将非常有帮助。 :-)

最佳答案

create table foo1 ( id integer, name text );
insert into foo1 values (1,'Bob'),(2,'Te'),(3,'Jack'),(4,'John');
select * from foo1 where id not in (1,2);
select * from foo1 where not (id = ANY(ARRAY[1,2]));

create or replace function so_example(int)
returns SETOF foo1 as $$
declare
id alias for $1;
idlist int[] := '{1}';
q text;
rec record;
begin
idlist := idlist || ARRAY[id];
q := 'select * from foo1 where not (id = ANY('||quote_literal(idlist)||'))';
raise notice 'foo % %', idlist,q;
for rec in execute(q) loop
return next rec;
end loop;
end; $$
language 'plpgsql';

select * from so_example(3);

关于postgresql - 在 PostgreSQL WHERE 子句中,如何查找 ID 不在数组中的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com