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

查询category表中仅含food与sport组合的cat_id

找出仅包含food和sport的类别组合解决方案

嗨,这就帮你搞定这个SQL查询需求!咱们要从category表中揪出只由food和sport这两个支出类别组成的cat_id——简单说就是,这个cat_id对应的所有spending_category只能是这俩,不能多也不能少。

方案一:分组后用多条件校验

这是最直观的写法,通过分组后同时满足两个核心条件:

SELECT cat_id
FROM category
GROUP BY cat_id
HAVING 
  -- 确保该cat_id刚好对应2个不同的支出类别
  COUNT(DISTINCT spending_category) = 2
  -- 确保这2个类别全是food和sport,没有其他额外类别
  AND SUM(CASE WHEN spending_category IN ('food', 'sport') THEN 1 ELSE 0 END) = 2;

方案二:先排除不合格项,再筛选目标

先把那些包含非food/sport类别的cat_id全部排除,再从剩下的里面找刚好有2个类别的(也就是同时包含food和sport的):

SELECT cat_id
FROM category
WHERE cat_id NOT IN (
  -- 先找出所有带其他类别的cat_id
  SELECT cat_id 
  FROM category 
  WHERE spending_category NOT IN ('food', 'sport')
)
GROUP BY cat_id
-- 确保剩下的cat_id刚好覆盖food和sport两个类别
HAVING COUNT(DISTINCT spending_category) = 2;

结果说明

这两个查询都会返回cat_id = 1:

  • cat_id=2因为包含movie,会被条件过滤掉
  • cat_id=3同样带有movie,也会被排除在外

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:47:28