SQL查询问题

pcwak 2003-10-20 08:15:13
查询出选中“软件工程”的学号和姓名,我用下面的语句:

select 学生表.姓名,学生表.学号 from 学生表,选课表 where 选课表.课程号=
(select 课程号 from 课程表 where 课程名='软件工程')

学生表

学号 姓名
----------- --------
200202 1
200203 2
200204 3
200205 4
200206 5
200207 6
200208 7
200209 8
200210 9
200211 10

课程表

课程号 课程名
----------- ------------
1 C语言
2 软件工程
3 VB程序设计

选课表

学号 课程号
----------- -----------
200202 2
200202 1
200203 3
200203 1
200204 3
200205 1

为什么会得到下面的记录,而不是我要的记录

姓名 学号
-------- -----------
1 200202
2 200203
3 200204
4 200205
5 200206
6 200207
7 200208
8 200209
9 200210
10 200211

...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
playyuer 2003-10-20
  • 打赏
  • 举报
回复
我这个肯定没错!

--非相关子查询
select *
from 学生表
where 学号 in (select 学号
from 选课表
where 课程号 in (select 课程号
from 课程表
where 课程名 = '软件工程'
)
)
kenko 2003-10-20
  • 打赏
  • 举报
回复
你应该要将学生表与选课表连接,才能找到正确的学号。
下面你试试吧,如有错误请指正。

select 学生表.姓名,学生表.学号 from 学生表,选课表
where 学生表.学号 = 选课表.学号 and 选课表.课程号 in
(select 课程号
from 课程表
where 课程名='软件工程');
pcwak 2003-10-20
  • 打赏
  • 举报
回复
谢了
angle097113 2003-10-20
  • 打赏
  • 举报
回复
你的学生表和选课表没有联系上
playyuer 2003-10-20
  • 打赏
  • 举报
回复
--非相关子查询
select *
from 学生表
where 学号 in (select 学号
from 选课表
where 课程号 in (select 课程号
from 课程表
where 课程名 = '软件工程'
)
)
angle097113 2003-10-20
  • 打赏
  • 举报
回复
select 学生表.姓名,学生表.学号 from 学生表,选课表 where 选课表.课程号=
(select 课程号 from 课程表 where 课程名='软件工程') and 学生表.学号=选课表.学号
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
try:
select a.姓名,a.学号 from 学生表 a
join 选课表 b on a.学号 = b.学号
join 课程表 c on b.课程号 = c.课程号
where c.课程名='软件工程'

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧