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

Google BigQuery中WHERE NOT IN多列查询报错求助

解决BigQuery中多列NOT IN的报错问题

报错原因

BigQuery的IN/NOT IN仅支持单列匹配,你用(id_loan,aud_insert_ts)两列和子查询的多列结果对比,触发了"Subquery of type IN must have only one output column"错误。BigQuery是支持NOT IN的,但仅限单列场景。

替代解决方案

方案1:使用NOT EXISTS

通过关联子查询实现多列匹配逻辑,代码如下:

SELECT * 
FROM `your-project.your-dataset.table` t1
WHERE NOT EXISTS (
    SELECT 1
    FROM `your-project.your-dataset.table` t2
    GROUP BY t2.id_loan
    HAVING t2.id_loan = t1.id_loan AND MAX(t2.aud_insert_ts) = t1.aud_insert_ts
)

方案2:使用窗口函数(更高效)

利用ROW_NUMBER()窗口函数标记每个id_loan分组内的最新记录,再筛选非最新的行,适合大数据量场景:

WITH ranked_data AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY id_loan ORDER BY aud_insert_ts DESC) AS rn
    FROM `your-project.your-dataset.table`
)
SELECT * EXCEPT(rn)
FROM ranked_data
WHERE rn > 1

这个逻辑里,每个id_loan分组中最新的aud_insert_ts对应的行rn=1,筛选rn>1就得到了原查询想要的"不在最新记录集合里"的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:14:55