我使用JSON传递ID列表,但是以下查询始终返回所有记录。
select first_name
from app.users
where id in (
select id::varchar::bigint
from json_array_elements('[9497902]'::json) id
);
使用ID手动替换JSON将带回预期的记录量:
select first_name
from app.users
where id in (
9497902
);
我缺少能够与JSON ID一起使用的东西吗?
答案 0 :(得分:0)
select name
from users
where id in (
select id.value::varchar::bigint
from json_array_elements('[1,3]'::json) id
);
子查询中使用的名称id
已从外部查询转移到内部查询中。可以通过执行以下查询来检查:
select name
from users
where id in (
select id
);
您的JSON函数的别名为id
,但这是结果集的名称,而不是该列的名称。该函数的默认列名称为value
。因此正确地,您必须使用SELECT id.value...
或简单地使用SELECT value
来引用正确的值。