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

如何用MySQL查询容纳至少两种不同类型动物的笼子编号

解决方法

要找出容纳至少两种不同类型动物的笼子编号,核心逻辑是按笼子编号分组,统计每个笼子内的动物类型数量,筛选出类型数量≥2的笼子。具体SQL语句如下:

SELECT a.cNum
FROM TheAnimals a
GROUP BY a.cNum
HAVING COUNT(DISTINCT a.Type) >= 2;

如果需要确保结果仅包含theCages表中存在的有效笼子编号,可以关联theCages表:

SELECT DISTINCT a.cNum
FROM TheAnimals a
JOIN theCages c ON a.cNum = c.cNum
GROUP BY a.cNum
HAVING COUNT(DISTINCT a.Type) >= 2;

逻辑说明

  • GROUP BY a.cNum:按笼子编号分组,将同一个笼子里的动物归为一组
  • COUNT(DISTINCT a.Type):统计每组内不同动物类型的数量(用DISTINCT避免重复类型被多次计数)
  • HAVING COUNT(DISTINCT a.Type) >= 2:筛选出包含至少两种不同类型动物的笼子

结合你提供的数据,所有笼子中的动物都只有单一类型:

  • cNum=11:仅包含Leopard类型
  • cNum=12:仅包含Lion类型
  • cNum=1:仅包含Bear类型
  • cNum=3:仅包含Magpie类型
    因此执行上述语句会返回空结果,符合预期。

对比你之前的查询

你之前的查询是按动物类型分组,找出对应类型有至少2只动物的笼子,这和需求中“笼子内有至少两种不同类型动物”的逻辑完全不同,所以得到的cNum=11仅代表该笼子里有2只同类型的Leopard,并非符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:55:23