GoogleCloudBigquery上有一个如下表。
id:1, arr_val: [{"a":"111"},{"a":"222"},{"a":"333"}]
id:2, arr_val: [{"a":"000"},{"a":"222"},{"a":"333"}]
id:2, arr_val: [{"a":"111"},{"a":"444"},{"a":"555"}]
...
我要搜索具有{“ a”:111}和{“ a”:222}的记录。
在上面的示例中,我希望提取id1。
我在下面尝试过
SELECT
arr_val
FROM
"TableName",
UNNEST(arr_val) AS line
WHERE
REGEXP_CONTAINS(line.a, r"....") )
and
REGEXP_CONTAINS(line.a, r"....") )
如果WHERE条件是一个条件,则每个查询都起作用。
但是,当WHERE条件为2时,它不能很好地工作。
答案 0 :(得分:1)
以下是用于BigQuery标准SQL
#standardSQL
SELECT id, arr_val
FROM `project.dataset.table` t
WHERE 2 = (SELECT COUNT(DISTINCT a) FROM t.arr_val line WHERE a IN (111, 222))