You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中如何基于另一张表对用户分组内的记录进行过滤

原SQL错误原因

  • 你对table_1做GROUP BY userId但未对非分组字段加聚合函数,不符合SQL语法规范
  • 子查询SELECT lastTimestamp FROM \table_2` GROUP BY userId`会返回所有userId对应的多条lastTimestamp结果,不能直接和单值做大小比较

正确实现方案

直接用INNER JOIN关联两张表,按userId匹配后过滤符合时间条件的记录即可,SQL写法如下:

SELECT t1.userId, t1.timestamp
FROM `table_1` t1
INNER JOIN `table_2` t2
ON t1.userId = t2.userId
WHERE t1.timestamp < t2.lastTimestamp

注意事项

  • 由于你的timestamp和lastTimestamp都是STRING类型,且存储格式为YYYY-MM-DD,字符串字典序和时间顺序一致,直接比较不会出错
  • 如果时间格式不统一,建议先转为DATE类型再比较,写法为DATE(t1.timestamp) < DATE(t2.lastTimestamp)

该写法执行结果和你给出的预期输出完全匹配。

内容的提问来源于stack exchange,提问作者Zelazny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:54:04