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

SQL查询未返回预期结果:排除特定组合条件出错排查

SQL逻辑错误排查及修正

你的问题出在括号内的条件逻辑上:

  • 原条件category != 'Increase Customer Loyalty' AND channel != 'all'的意思是:同时满足分类不是「Increase Customer Loyalty」且渠道不是「all」的记录才会被保留。这会把所有分类是目标值(不管渠道是什么)、以及所有渠道是「all」(不管分类是什么)的记录全部排除,最终导致所有行被过滤。
  • 而你实际需要的是排除同时满足渠道为「all」且分类为「Increase Customer Loyalty」的记录,也就是保留「不同时满足这两个条件」的所有记录。

正确的两种写法:

写法1:使用NOT直接排除目标组合

SELECT * FROM `flows_predefined`
WHERE platform = 'shopify'
AND status = 1
AND NOT (
    category = 'Increase Customer Loyalty'
    AND channel = 'all'
)
ORDER BY `flows_predefined`.`id` DESC;

写法2:利用德摩根定律转换(逻辑等价)

SELECT * FROM `flows_predefined`
WHERE platform = 'shopify'
AND status = 1
AND (
    category != 'Increase Customer Loyalty'
    OR channel != 'all'
)
ORDER BY `flows_predefined`.`id` DESC;

这两种写法都能准确排除你指定的目标记录,保留其他符合platform='shopify'和status=1的所有行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:18:30