use*_*505 3 google-bigquery google-cloud-platform
我正在尝试查看 BigQuery 数组中是否存在某组项目。
下面的查询有效(检查数组中是否存在 1 项):
WITH sequences AS
(
SELECT 1 AS id, [10,20,30,40] AS some_numbers
UNION ALL
SELECT 2 AS id, [20,30,40,50] AS some_numbers
UNION ALL
SELECT 3 AS id, [40,50,60,70] AS some_numbers
)
SELECT id, some_numbers
FROM sequences
WHERE 20 IN UNNEST(some_numbers)
Run Code Online (Sandbox Code Playgroud)
我无法执行的操作如下(检查数组中是否存在超过 1 个项目):
(此查询错误)
WITH sequences AS
(
SELECT 1 AS id, [10,20,30,40] AS some_numbers
UNION ALL
SELECT 2 AS id, [20,30,40,50] AS some_numbers
UNION ALL
SELECT 3 AS id, [40,50,60,70] AS some_numbers
)
SELECT id, some_numbers
FROM sequences
WHERE (20,30) IN UNNEST(some_numbers)
Run Code Online (Sandbox Code Playgroud)
WITH sequences AS
(
SELECT 1 AS id, [10,20,30,40] AS some_numbers
UNION ALL
SELECT 2 AS id, [20,30,40,50] AS some_numbers
UNION ALL
SELECT 3 AS id, [40,50,60,70] AS some_numbers
)
SELECT id, some_numbers
FROM sequences
WHERE (
(
SELECT COUNT(1)
FROM UNNEST(some_numbers) s
WHERE s in (20,30)
) > 1
)
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏。
没有太多建议...官方文档建议使用exists
:
WHERE EXISTS (SELECT *
FROM UNNEST(some_numbers) AS s
WHERE s in (20,30));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14494 次 |
最近记录: |