查询掌握ReactJS、MySQL、Express三种技术的人员姓名
找出同时掌握ReactJS、MySQL、Express的人员姓名
嘿,我来帮你搞定这个SQL查询问题!要找出同时掌握ReactJS、MySQL、Express这三项技术的人员,这里有两种实用的方法,咱们一步步来看:
方法一:使用GROUP BY + HAVING子句
这是最常用也最直观的方式,通过分组和条件筛选来实现:
SELECT name FROM your_table_name -- 替换成你的实际表名 WHERE technologies IN ('reactjs', 'mysql', 'express') GROUP BY name HAVING COUNT(DISTINCT technologies) = 3;
逻辑解释:
WHERE子句先过滤出只包含目标三项技术的记录,减少后续分组的数据处理量GROUP BY name把同一个人的所有技术记录合并为一组HAVING COUNT(DISTINCT technologies) = 3确保该组恰好包含全部三个不同的技术(用DISTINCT是为了避免同一个人多次记录同一技术的干扰)
方法二:使用自连接查询
如果你更习惯用连接的思路,也可以通过三次自连接来筛选出同时拥有三项技术的人员:
SELECT DISTINCT t1.name FROM your_table_name t1 JOIN your_table_name t2 ON t1.name = t2.name AND t2.technologies = 'mysql' JOIN your_table_name t3 ON t1.name = t3.name AND t3.technologies = 'express' WHERE t1.technologies = 'reactjs';
逻辑解释:
- 每次自连接都匹配同一个人对应的技术,三次连接后得到的就是同时拥有三项技术的人员集合
DISTINCT用来去除可能出现的重复姓名
查询结果
执行上述任意一种SQL语句后,得到的结果如下:
| name |
|---|
| shashin |
内容的提问来源于stack exchange,提问作者Shashin Bhayani
相关产品推荐
相关产品推荐

