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

添加not_relevant条件后含PARTITION BY的SQL查询未生效问题

问题原因及解决方法

问题出在逻辑运算符优先级与括号的错误使用:

  • SQL中AND的优先级高于OR,你当前的WHERE条件会被数据库解析为:
    sn = 1 AND (checkbox IS NULL OR (checkbox = 0 AND not_relevant != 1))
  • 这意味着只要checkbox IS NULL成立,不管not_relevant是否为1,这条数据都会被选中,所以即使not_relevant=1,查询结果也不会变化。

修正后的SQL需要把checkbox的两个判断用括号包裹,确保和not_relevant的条件是同时满足的关系:

SELECT T.* FROM
  (SELECT *, row_number() OVER
    (PARTITION BY manager_id ORDER BY id) AS sn FROM my_table) T
WHERE (sn = 1)
  AND ((checkbox IS NULL OR checkbox = 0) 
  AND (not_relevant != 1))

或者拆分条件,写法更清晰:

SELECT T.* 
FROM (
    SELECT *, 
           row_number() OVER(PARTITION BY manager_id ORDER BY id) AS sn 
    FROM my_table
) T
WHERE sn = 1
  AND (checkbox IS NULL OR checkbox = 0)
  AND not_relevant != 1

这样修改后,只有同时满足sn=1、checkbox为NULL或0、not_relevant不等于1的记录才会被筛选出来,就能正确排除not_relevant=1的数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:10:58