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

MySQL查询需求:筛选同ID且含Black选项的对应记录

解决方案:提取存在Black选项的ID对应的非Black值

没问题,这个需求很清晰——咱们要找出那些同一ID下既有Black选项,又有其他选项的记录,然后把非Black的那个选项捞出来。我给你两种常用的SQL实现方式,都能得到你想要的结果:

方法1:自连接查询

这是最直观的方式,通过把表和自身关联,筛选出符合条件的记录:

SELECT t1.id, t1.option_name
FROM your_table t1
INNER JOIN your_table t2 
  ON t1.id = t2.id
WHERE t1.option_name != 'Black'
  AND t2.option_name = 'Black';

逻辑解释:

  • 用t2表筛选出所有包含Black选项的ID
  • 用t1表匹配这些ID,同时只保留非Black的选项
  • 这样就精准定位到了那些既有Black又有其他选项的ID对应的非Black值

方法2:分组+条件判断

如果你的SQL支持分组聚合,这种方式更简洁:

SELECT 
  id, 
  MAX(CASE WHEN option_name != 'Black' THEN option_name END) AS option_name
FROM your_table
GROUP BY id
HAVING SUM(CASE WHEN option_name = 'Black' THEN 1 ELSE 0 END) > 0;

逻辑解释:

  • 按id分组,确保我们处理的是同一ID下的所有记录
  • HAVING子句过滤掉那些没有Black选项的ID分组
  • MAX(CASE...)用来提取分组里的非Black选项(因为你的样本数据每个符合条件的ID只有一个非Black值,用MAX刚好能取到;如果有多个非Black值,可以换成GROUP_CONCAT来合并)

两种方法执行后,都会返回你期望的结果:

  • 2969 M
  • 2971 S

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:27:31