sql用自身连接查询同名学生的姓名和学号
时间: 2024-03-10 14:46:53 浏览: 240
关系运算中的连接操作-结构化查询语言SQL
可以使用自连接(self join)来查询同名学生的姓名和学号。假设学生信息保存在一个名为"student"的表中,包含字段"id"和"name",则可以使用以下SQL查询同名学生姓名和学号:
```sql
SELECT s1.id, s1.name
FROM student s1, student s2
WHERE s1.name = s2.name AND s1.id <> s2.id
ORDER BY s1.name, s1.id;
```
该语句会将表"student"自连接,对于每个学生记录,都会与表中其他同名的学生记录进行比较。如果姓名一致且学号不同,则认为是同名学生,将其学号和姓名输出。最后按照姓名和学号排序输出结果。
需要注意的是,如果有三个或以上同名的学生,该语句会输出多个结果,每个学生都会与其他同名学生匹配,因此可能会产生冗余结果。可以通过GROUP BY和DISTINCT等方式进行优化。
阅读全文