代码之家  ›  专栏  ›  技术社区  ›  KG1

BigQuery-较大的查询在子查询抛出错误时执行

  •  0
  • KG1  · 技术社区  · 2 年前

    我有一个查询,用于筛选 enrollment_year 关于学生的支出数据。

    select student_id 
    from table1 
    where enrollment_year = 2003 
    group by 1
    

    此查询返回以下错误:

    无法识别的名称:注册年份[1:10]

    原因是,列名和数据类型被错误地提及,正确的查询应该是:

    select student_id 
    from table1 
    where enrol_year = 'Year 2003' 
    group by 1
    

    但是,当我使用第一个查询作为较大查询内部的内部查询时;整个查询执行并产生一个结果。

    例如:

    select grade, count(*)
    from `table2`
    where student_id in (select student_id 
                         from `table1` 
                         where enrollment_year = 2003 
                         group by 1)
    group by 1;
    

    我原以为较大的查询会失败,因为内部查询抛出了一个错误。

    不确定为什么最后一个查询工作时没有错误。

    谢谢

    1 回复  |  直到 2 年前
        1
  •  0
  •   Ricardo Smith    2 年前

    如果没有关于DB引擎或表结构的其他信息,我会假设表2中存在enrollment_year列。由于您没有在子查询中指定列来自哪个表,DB系统可能只是假设您引用了表2中的列,因为它不存在于表1中。

    你可以查看其他帖子,其中有人提出了类似的问题: Query with broken sub-select should result in error but returns rows