【发布时间】:2020-03-10 15:42:11
【问题描述】:
有什么问题
我有一个非常大的结果列表。我想根据表中最受欢迎的结果过滤我的查询,使其仅包含一小部分查询。
当我将过滤子查询放在WITH 子句中时,它不起作用。但是,如果我将它直接放在 WHERE 子句中,它确实有效。为什么?
为了清楚起见,我更喜欢第一个,但我无法让它工作。
我正在使用 StandardSQL 在 BigQuery 中工作。
示例
WITH
most_common AS (
SELECT
page
FROM
`mydataset`
LIMIT
100
)
SELECT
*
FROM
`mydataset`
WHERE
page IN most_common
这里我试图获取所有结果,其中页面位于前 100 行中。
它返回以下错误:
- Syntax error: Expected "(" or keyword UNNEST but got identifier "most_common" at [12:12]
但是,如果我将子查询直接放在它可以正常工作的地方。
SELECT
*
FROM
`mydataset`
WHERE
page IN (
SELECT
page
FROM
`mydataset`
LIMIT
100
)
我的理解有限
它说它想要 unnest,但 unnest 将数组转换为表结果作为子查询,这应该已经是一个表。
【问题讨论】: