![](/img/trans.png)
[英]SQL - NULL values included in array when using 'IGNORE NULLS'
[英]Using Array statements in SQL together with Where clause outputs extra rows with null values but it shouldnt
我开始尝试使用 BigQuery,遇到了 SQL 语法,例如array和unnest 。 我创建了一个嵌套表(这是正确的名称吗?)并编写了一个示例查询(如下)
我想得到“enes”的部门,所以我写了这个查询:
SELECT
dept,
ARRAY(SELECT employeeName FROM UNNEST(name) AS employeeName
WHERE ( (employeeName LIKE 'enes') and
(employeeName is not null))) AS EmpNameDisplay
FROM EmployeeTable
然而结果看起来像这样:
为什么它带来了第二行? 如果我有数百万个部门,它会尝试把它们都带进来怎么办?
我以不包括嵌套表的方式对表进行了改造。 而当我使用 where 语句来选择 'enes' 的部门时,它只显示了一个正确的结果。 为什么这种嵌套会导致这种异常?
我想你需要这样的东西:
with EmployeeTable as
(
select 'Data Engineer' as dept, ['enes','emre','john'] as name
union all select 'Manager' as dept, ['machiavelli','john'] as name
)
select t1.dept,
employeeName
from EmployeeTable t1,
UNNEST(t1.name) as employeeName
where employeeName = 'enes'
;
如果您不需要结果列表中的员工姓名(仅限部门名称),您可以使用:
with EmployeeTable as
(
select 'Data Engineer' as dept, ['enes','emre','john'] as name
union all select 'Manager' as dept, ['machiavelli','john'] as name
)
select t1.dept
from EmployeeTable t1
where 'enes' in UNNEST(t1.name)
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.