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

MySQL筛选包含product_id=1且无Y数据的订单ID

问题分析与SQL修正

你当前的SQL存在两个问题:

  • 误将op.product_id = 1写成了op.id = 1(你的表结构里order_products没有id字段)
  • 缺少过滤订单内存在product_data含"Y"的产品的逻辑

结合你的三个筛选条件,这里提供两种可行的修改方案:

方案一:使用NOT EXISTS子查询

SELECT op.order_id
FROM order_products op
JOIN orders o ON o.order_id = op.order_id
WHERE o.count = 3 
  AND op.product_id = 1
  AND NOT EXISTS (
    SELECT 1 
    FROM order_products op2 
    WHERE op2.order_id = op.order_id 
      AND op2.product_data LIKE '%Y%'
  )
GROUP BY op.order_id

方案二:使用GROUP BY + HAVING组合

SELECT op.order_id
FROM order_products op
JOIN orders o ON o.order_id = op.order_id
WHERE o.count = 3
GROUP BY op.order_id
HAVING SUM(CASE WHEN op.product_id = 1 THEN 1 ELSE 0 END) >= 1
   AND SUM(CASE WHEN op.product_data LIKE '%Y%' THEN 1 ELSE 0 END) = 0

逻辑说明

  • 订单产品数量为3:通过o.count = 3关联orders表实现
  • 包含product_id=1的产品:
    • 方案一通过op.product_id = 1直接筛选出包含该产品的订单记录,再通过GROUP BY去重
    • 方案二通过HAVING里的统计逻辑,确保订单内存在至少一个product_id=1的产品
  • 所有产品product_data不含"Y":
    • 方案一通过NOT EXISTS子查询,排除掉订单内存在任何product_data含"Y"的记录
    • 方案二通过HAVING里的统计逻辑,确保订单内没有product_data含"Y"的产品

两种方案都能得到预期结果order_id = 2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:39:17