我有一个表,该表包含3列我关心的列:Name
,Id
和ParentId
。我想找出Id
有多少个孩子,这些孩子需要我逐行浏览。
这是我到目前为止所拥有的:
CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
RETURNS INT64
AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));
SELECT numChildren(Id) OVER() as Test FROM `playground.table`
我得到的确切错误是:Error: Function USER_DEFINED_FUNCTIONS:NUMCHILDREN does not support an OVER clause at [5:8]
。
我想遍历每一行,将Id
传递到函数中,然后获取以Id
作为ParentId
的行数。
我要这样做正确吗?我是否必须使用API进行这样的查询?
答案 0 :(得分:2)
只需如下删除OVER()
CREATE TEMPORARY FUNCTION numChildren(givenId INT64)
RETURNS INT64
AS ((SELECT count(*) FROM `playground.table` WHERE ParentId = givenId));
SELECT numChildren(Id) as Test FROM `playground.table`