我有一个Postgres表,其中包含数组字段和以下值:
我想提取所有在field
列中具有id
值的行,下面是我尝试的查询(现在使用表别名简化):
SELECT tb1."id",
tb1."field",
tb1."field1"
FROM "polls_nullableintegerarraymodel" tb1
WHERE tb1."field" IN (ARRAY[tb1."id"])
但由于某种原因,它并没有拉动值。
我有一个Postgres表,其中包含数组字段和以下值:
我想提取所有在field
列中具有id
值的行,下面是我尝试的查询(现在使用表别名简化):
SELECT tb1."id",
tb1."field",
tb1."field1"
FROM "polls_nullableintegerarraymodel" tb1
WHERE tb1."field" IN (ARRAY[tb1."id"])
但由于某种原因,它并没有拉动值。
2条答案
按热度按时间wj8zmpe11#
我期待这样的东西:
另外,请注意表别名如何使查询更易于写入和读取。
编辑:
下面是显示此工作的示例代码:
这只返回第二行。
编辑II:
你似乎想要这个:
这可能是一个简单的方法来完成你想要的,但这似乎是你正在尝试的。
v8wbuo2f2#
根据您的评论:
我想检查arrayfield是否包含任何id值
此查询返回所有行,其中
field
中的数组包含来自同一个表的 anyid
值(不仅仅是同一行):在
EXISTS
表达式中使用ANY
构造:与array operators相同:
使用重叠运算符
&&
和一个简单的ARRAY构造函数(在简单情况下比array_agg()
快)。但我预计这个变体的性能会随着大表而恶化,因为组装的数组会变得同样大。