jaa*_*lah 5 sql database google-bigquery
我正在使用 Google BigQuery,我试图从“table2”中查找“userid”,但不包括存储在“table1”中 2 次或更多次的用户 ID。这是代码:
#standardSQL
WITH t100 AS (
SELECT count_table.userid
From(
SELECT userid,COUNT(`project.dataset.table1`.userid) as notification_count
FROM `project.dataset.table1`
GROUP BY userid) as count_table
where notification_count >= 2
)
SELECT userid FROM `project.dataset.table2` WHERE userid NOT IN (SELECT userid FROM t100)
Run Code Online (Sandbox Code Playgroud)
问题是,这是从 'table1' 返回存储 2 次或更多次的 'userid's,我曾尝试添加WHERE userid IS NOT NULL到SELECT userid FROM t100,但它没有任何区别。为了让一切都更清楚,这个 :
SELECT userid FROM t100不是空的,并且由于某种原因返回的结果仍然显示在上面第一个代码的结果中。
我尝试将 WHERE userid IS NOT NULL 添加到 SELECT userid FROM t100,但没有什么区别
这当然没有影响,因为当你COUNT(userid) as notification_count这样做时,它总是为 userid NULL 返回 0,因此被 If you would use COUNT(1) 过滤掉HAVING notification_count >= 2
- 这就是你可能在 t100 的输出中获得 null userid 的地方。所以userid is NULL这里绝对不是问题
正如其他人指出的那样 - 您的查询应该有效 - 所以如果您继续遇到问题 - 您需要在这个问题上进行更多挖掘并向我们提供更多详细信息
同时,尝试下面作为您的查询的另一个版本(否则看起来不错)
#standardSQL
WITH t100 AS (
SELECT userid
FROM `project.dataset.table1`
GROUP BY userid
HAVING COUNT(userid) >= 2
)
SELECT userid
FROM `project.dataset.table2` AS t2
LEFT join t100 ON t100.userid = t2.userid
WHERE t100.userid IS NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |