gpt4 book ai didi

sql - postgres 选择从不同表中选择的数组中的 id

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

来自 postgres noob 的问题。我在 postgres 中有两个表。请参见下面的示意图。

strains_snps::table
name::str
variants_id::int array

variants::table
id::int
ref_base::str

我要

select variants_id 
from strains_snps
where strains_snps.name = 'foo'

然后在后续查询中使用该 variants_id(它是一个 int 数组)。

select * 
from variants
where id in the_output_from_previous_query

来自 python,我会将第一个查询的输出分配给一个变量,然后在第二个查询中检查该变量的成员资格。但这可能不是这里的最佳方法,我希望有某种方法可以使它作为单个查询工作?

编辑

@Sumit 建议使用子查询。我试过了,但没有成功。

select * from variants 
where id in
(select variants_id from strains_snps where name = 'BMD1964')

pgadmin 返回的错误是

ERROR:  operator does not exist: integer = integer[]
LINE 2: where id in
^
HINT: No operator matches the given name and argument type(s). You
might need to add explicit type casts.

********** Error **********

ERROR: operator does not exist: integer = integer[]
SQL state: 42883
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Character: 34

最佳答案

试试这个:

select * 
from variants
where id in (
select unnest(variants_id)
from strains_snps
where strains_snps.name = 'foo'
)

关于sql - postgres 选择从不同表中选择的数组中的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581370/

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