繁体   English   中英

使用 SQL 中的 Array 语句和 Where 子句输出带有 null 值的额外行,但它不应该

[英]Using Array statements in SQL together with Where clause outputs extra rows with null values but it shouldnt

我开始尝试使用 BigQuery,遇到了 SQL 语法,例如arrayunnest 我创建了一个嵌套表(这是正确的名称吗?)并编写了一个示例查询(如下) 在此处输入图像描述

我想得到“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM