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

Standard-SQL中如何合并两个WHERE条件并实现OR逻辑查询?

合并两个SQL WHERE条件的正确姿势

嘿,我懂你现在卡在哪了!要实现满足语句1 或 语句2的查询,核心是用括号明确逻辑优先级——毕竟SQL里AND的优先级比OR高,直接写的话逻辑很容易跑偏。

先把你的两个条件再理一遍:

  • 语句1:(feedback IS NOT NULL OR text IS NOT NULL) AND rating <= 2
  • 语句2:(rating = 3 OR rating = 4) AND feedback IS NOT NULL

要让这两个条件满足任意一个,只需要把它们用OR连接,并且给每个完整条件套上括号就行,这样能保证每个子条件的逻辑先被计算,再做OR判断,可读性和准确性都拉满。

最终正确的WHERE子句

WHERE 
  ((feedback IS NOT NULL OR text IS NOT NULL) AND rating <= 2) 
  OR 
  ((rating = 3 OR rating = 4) AND feedback IS NOT NULL)

为什么要加外层括号?

可能你会疑惑:不加外层括号的话,SQL会不会自动按正确顺序计算?理论上,因为AND优先级更高,不加外层括号的结果和加了是一样的,但强烈建议加上外层括号——一来逻辑一目了然,谁接手都能看懂;二来后续修改条件时,不会因为优先级问题搞出bug,稳得很。

逻辑核对

我们再确认下这个条件覆盖的场景:

  1. 当评分≤2时,只要feedback或text有一个不为空就符合要求;
  2. 当评分是3或4时,必须feedback不为空才符合要求。
    完全匹配你想要的需求对吧?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:37