— 查询同时参加计算机和英语考试的学生的信息
问一下该怎么查询?
解决方案
10
SELECT a.* FROM student a JOIN ( SELECT Stu_id ,COUNT(1) AS num FROM score WHERE C_name IN ( “计算机”, “英语” ) GROUP BY Stu_id HAVING num >1 ) t ON a.id = t.Stu_id
你再本地试下
你再本地试下
30
where引入计算机和英语,having引入count>1就可以了:
select student.*,score.stu_id
from student left join score
on student.id=score.stu_id
where score.c_name in (“计算机”,”英语”)
group by student.id
having count(student.id)>1
;
+–+–+–+–+–+–+–+
| id | NAME | sex | birth | department | address | stu_id |
+–+–+–+–+–+–+–+
| 901 | 令狐冲 | 男 | 1995 | 计算机系 | 北京市海淀区 | 901 |
| 904 | 任本人行 | 男 | 1990 | 英语系 | 辽宁省阜新市 | 904 |
| 906 | 向问天 | 男 | 1998 | 计算机系 | 广州省深圳市 | 906 |
| 907 | 周芷若 | 女 | 1999 | 计算机系 | 湖北省武汉市 | 907 |
+–+–+–+–+–+–+–+
4 rows in set (0.00 sec)
select student.*,score.stu_id
from student left join score
on student.id=score.stu_id
where score.c_name in (“计算机”,”英语”)
group by student.id
having count(student.id)>1
;
+–+–+–+–+–+–+–+
| id | NAME | sex | birth | department | address | stu_id |
+–+–+–+–+–+–+–+
| 901 | 令狐冲 | 男 | 1995 | 计算机系 | 北京市海淀区 | 901 |
| 904 | 任本人行 | 男 | 1990 | 英语系 | 辽宁省阜新市 | 904 |
| 906 | 向问天 | 男 | 1998 | 计算机系 | 广州省深圳市 | 906 |
| 907 | 周芷若 | 女 | 1999 | 计算机系 | 湖北省武汉市 | 907 |
+–+–+–+–+–+–+–+
4 rows in set (0.00 sec)