如何在 Bigquery 中使用 Except 子句?
How to use Except clause in Bigquery?
我正在尝试使用 Bigquery 中现有的 Except
子句。请在下面找到我的查询
select * EXCEPT (b.hosp_id, b.person_id,c.hosp_id) from
person a
inner join hospital b
on a.hosp_id= b.hosp_id
inner join reading c
on a.hosp_id= c.hosp_id
如您所见,我使用了 3 个表。所有 3 个表都有 hosp_id
列,所以我想删除 b.hosp_id
和 c.hosp_id
的重复列。同样,我也想删除 b.person_id
列。
当我执行上述查询时,出现语法错误,如下所示
Syntax error: Expected ")" or "," but got "." at [9:19]
请注意,我在 Except
子句中使用的所有列都存在于所使用的表中。附加信息是所有使用的表都是使用 with
子句 创建的 临时表。当我通过选择感兴趣的列手动执行相同操作时,它工作正常。但是我有好几列,无法手动执行此操作。
你能帮忙吗?我正在尝试学习 Bigquery。您的意见会有所帮助
试试这个:
select * EXCEPT (person_id) from
person a
inner join hospital b
using (hosp_id)
inner join reading c
using (hosp_id)
您只能将列名(不是路径)放在 EXCEPT 列表中,并且可以简单地避免使用 USING 而不是 ON 投影重复列。
我在每个 table 的基础上使用 EXCEPT
:
select p.* EXCEPT (hosp_id, person_id),
h.*,
r.* EXCEPT (hosp_id)
from person p inner join
hospital h
on p.hosp_id = h.hosp_id inner join
reading r
on p.hosp_id = r.hosp_id;
请注意,这也使用 有意义的 缩写 table 别名,这使得查询更容易理解。
对于您的情况,如果您使用 USING
子句,我认为您根本不需要 EXCEPT
。
我正在尝试使用 Bigquery 中现有的 Except
子句。请在下面找到我的查询
select * EXCEPT (b.hosp_id, b.person_id,c.hosp_id) from
person a
inner join hospital b
on a.hosp_id= b.hosp_id
inner join reading c
on a.hosp_id= c.hosp_id
如您所见,我使用了 3 个表。所有 3 个表都有 hosp_id
列,所以我想删除 b.hosp_id
和 c.hosp_id
的重复列。同样,我也想删除 b.person_id
列。
当我执行上述查询时,出现语法错误,如下所示
Syntax error: Expected ")" or "," but got "." at [9:19]
请注意,我在 Except
子句中使用的所有列都存在于所使用的表中。附加信息是所有使用的表都是使用 with
子句 创建的 临时表。当我通过选择感兴趣的列手动执行相同操作时,它工作正常。但是我有好几列,无法手动执行此操作。
你能帮忙吗?我正在尝试学习 Bigquery。您的意见会有所帮助
试试这个:
select * EXCEPT (person_id) from
person a
inner join hospital b
using (hosp_id)
inner join reading c
using (hosp_id)
您只能将列名(不是路径)放在 EXCEPT 列表中,并且可以简单地避免使用 USING 而不是 ON 投影重复列。
我在每个 table 的基础上使用 EXCEPT
:
select p.* EXCEPT (hosp_id, person_id),
h.*,
r.* EXCEPT (hosp_id)
from person p inner join
hospital h
on p.hosp_id = h.hosp_id inner join
reading r
on p.hosp_id = r.hosp_id;
请注意,这也使用 有意义的 缩写 table 别名,这使得查询更容易理解。
对于您的情况,如果您使用 USING
子句,我认为您根本不需要 EXCEPT
。