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

查找拥有colors表全部颜色的人员姓名SQL语句正确性咨询

结论

你编写的SQL语句不能正确实现需求。

原因分析

你现有SQL的逻辑是关联两张表后对first_name去重,只要某个人员有至少1条对应颜色的记录就会被查询返回。按照你提供的测试数据运行该SQL,会返回所有出现在Persons表里的人员姓名,完全不满足「拥有全部颜色对应记录」的筛选要求。

正确SQL写法

思路是先统计颜色总数量,再按人员姓名分组,筛选出关联的不同颜色ID数量等于总颜色数的人员即可:

SELECT P.first_name AS NAMES
FROM Persons P
JOIN Colors C ON C.id = P.colorid
GROUP BY P.first_name
HAVING COUNT(DISTINCT P.colorid) = (SELECT COUNT(*) FROM Colors);

运行上述SQL后,你提供的测试数据中只会返回Mona这一个结果,符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:09:04