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

如何为IN语句中的单个元素添加WHERE条件?SQL查询求助

修正后的SQL查询及问题分析

原查询的问题

原语句存在两个核心问题:

  • 语法错误:同一个SELECT语句里出现了两个WHERE关键字,违反SQL语法规范,直接导致执行报错。
  • 逻辑不符:未区分product_1和product_2的不同过滤规则,无法实现你要的需求。

满足需求的修正查询

SELECT *
FROM sales
WHERE 
  -- 保留product_1中所有product_number在products表中的数据
  (name = 'product_1' AND product_number IN (SELECT number FROM products))
  -- 仅保留product_2中product_number为22、23的数据
  OR (name = 'product_2' AND product_number IN (22, 23))

逻辑说明

用括号明确分组条件,确保逻辑优先级正确:

  1. 对product_1:延续原查询规则,只保留product_number存在于products表中的记录
  2. 对product_2:直接限定product_number为22和23,过滤掉其他无关行

如果product_2的22、23也需要满足product_number存在于products表中的条件,可以简化为:

SELECT *
FROM sales
WHERE 
  product_number IN (SELECT number FROM products)
  AND (
    name = 'product_1'
    OR (name = 'product_2' AND product_number IN (22, 23))
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:15