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

如何编写SQL查询提取同一学号对应多个不同姓名的记录

问题说明

现有Student表包含Roll No.(学号)、Name(姓名)两个字段,部分相同学号的记录对应了不同的姓名,需要筛选出这类学号。
示例表数据如下:

Roll No.Name
1A
1A
2B
2C
2D
3E
3E
4F
5G
6H
6I

筛选规则:

  • 同一学号对应多个不同姓名的才纳入结果,比如学号2对应B/C/D、学号6对应H/I符合要求
  • 同一学号有多条记录但姓名完全一致的不纳入,比如学号1、3不符合要求
  • 最终预期输出学号为2、6
实现SQL

核心思路是按学号分组后,统计每组去重后的姓名数量,大于1的就是符合要求的学号:

SELECT `Roll No.`
FROM Student
GROUP BY `Roll No.`
HAVING COUNT(DISTINCT `Name`) > 1;
语句说明
  • 用GROUP BY Roll No.`` 把所有记录按学号分组
  • 用COUNT(DISTINCT Name) 统计每个学号下不重复的姓名数量,避免同姓名多条重复记录干扰统计结果
  • 用HAVING子句过滤出不重复姓名数大于1的分组,也就是对应多个不同姓名的学号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:03