SELECT * 其中所有整数 [] 单元格都在一组值中
SELECT * where all of integer[] cell are in a set of values
我正试图解决这个问题:
但是对于双方的多个值
所以像这样:
SELECT id FROM table WHERE ALL(column_of_type_integer_array) IN (2,3,4)
有这样的事情吗?还是我必须拆分我的价值观?
编辑:
table 挑战
id| precoditions
-----------------
1 |[]
2 |[]
3 |[]
4 |[2,3]
所以我只想 select 完成预条件挑战的挑战。
SELECT id FROM callenges WHERE All(preconditions) IN ${solvedChallenges}
我看不到没有某种拆分的解决方案,但您不需要重复查询的某些部分。我会使用 unnest()
:
拆分数组
SELECT m.id
FROM mytable m
WHERE (SELECT bool_and(u.i IN (2, 3, 4)) FROM unnest(m.int_array) u (i))
使用运算符<@
- is contained by,例如:
with my_table(arr) as (
values
(array[2,3,4,2,3]),
(array[1,2,3,4,2,3])
)
select *
from my_table
where arr <@ array[2,3,4]
arr
-------------
{2,3,4,2,3}
(1 row)
我正试图解决这个问题:
所以像这样:
SELECT id FROM table WHERE ALL(column_of_type_integer_array) IN (2,3,4)
有这样的事情吗?还是我必须拆分我的价值观?
编辑:
table 挑战
id| precoditions
-----------------
1 |[]
2 |[]
3 |[]
4 |[2,3]
所以我只想 select 完成预条件挑战的挑战。
SELECT id FROM callenges WHERE All(preconditions) IN ${solvedChallenges}
我看不到没有某种拆分的解决方案,但您不需要重复查询的某些部分。我会使用 unnest()
:
SELECT m.id
FROM mytable m
WHERE (SELECT bool_and(u.i IN (2, 3, 4)) FROM unnest(m.int_array) u (i))
使用运算符<@
- is contained by,例如:
with my_table(arr) as (
values
(array[2,3,4,2,3]),
(array[1,2,3,4,2,3])
)
select *
from my_table
where arr <@ array[2,3,4]
arr
-------------
{2,3,4,2,3}
(1 row)