永发信息网

关于sql语句的简单问题

答案:6  悬赏:0  手机版
解决时间 2021-04-13 01:12
  • 提问者网友:了了无期
  • 2021-04-12 03:19

有学生,和成绩两个表,其中字段分别是(学号,姓名,年龄),(学号,成绩,课程号)

现在想查询选了课的有哪些人?

select *from 学生
where exists(select *from 成绩)

我写的这个语句,为什么执行后显示的是学生表中全部的信息啊!我的学生表中肯定是有人没选课的啊

最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-04-12 03:27

唉~~exits 是对存在情况的判断,当存在时就为真。 select * from 成绩,肯定是真的啊,除非成绩表为空



改成 select * from 学生 where exists (select * from 成绩 where 学生.学号=成绩.学号)


全部回答
  • 1楼网友:毛毛
  • 2021-04-12 09:15

select * from 学生表 a

where exists (select * from 成绩表 b where a.学号=b.学号)

你可以试下。

  • 2楼网友:渊鱼
  • 2021-04-12 07:47
select * from 学生表 where 学生表.学号=成绩表.学号 and exists(select 课程号 from 成绩表)
  • 3楼网友:不甚了了
  • 2021-04-12 07:28
where exists(select *from 成绩) 改成where exists(select *from 成绩 where 学生.学号 = 成绩.学号)
  • 4楼网友:洎扰庸人
  • 2021-04-12 05:58

你用这个

Select * from 学生 join 成绩

on 学生.学号=成绩.学号

这样就显示只有选课的学生信息

  • 5楼网友:英雄的欲望
  • 2021-04-12 04:49

因为你的选课标准不对,你这里的where exist是忽略的不明确,因此会出现这个问题

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯