中易网

关于WHERe语句的问题

答案:2  悬赏:50  
解决时间 2021-02-18 01:26
假设有如下三个表
学生(学号,姓名,年龄,所在系)
课程(课程号,课程名,先行课)
选课(学号,课程号,成绩)

假设要求如下SQL查询:
求没有选修C2课程的学生姓名。

可以写成
SELECt 姓名
FROM 学生
WHERe NOT EXISTS (SELECt *
FROM 选课
WHERe 学生。学号=学号 AND 课程号=‘C2');
书上有提示,说
由于WHERe子句中的条件是元祖选择条件,所以不能写成
SELECt 姓名
FROM 学生,选课
WHERe 学生。学号=选课。学号 AND 课程号 < > 'C2';

这是为什么呢?

还有一个例子是,求选修了C1课程,并且也选修了C2课程的学生学号
不能写成
SELECt 学号
FROM
WHERe 课程号='C1' AND 课程号=’C2';

书上说WHERe子句是元祖选择子句,就不能这样用。我不明白。难道用AND连接两个条件就不行么?WHERe到底怎么用的~?
谢谢
最佳答案
where 之后的语句是用来做筛选的条件
and 关键字是用来进行多条件连接的

你这里进行二定义了,当然让数据库不知道你到底要做什么
WHERe 课程号='C1' AND 课程号=’C2';
这一句中,你先定义了“课程号要等于C1”,却在AND联接后面再要求它等于C2,这个时候就像你告诉一个人往左转,但紧接着就说是往右转,搞得别个也不知道到底该听你哪一句才是对的。

如果你想同时满足这两种条件:“课程号即等于C1,又等于C2”,那么可以用in 或者 or 关键字

in(条件1,条件2,.....,条件N)
in关键字可以从后面指定的条件中将结果集进行逐个匹配,如果有一个条件成立那么就成立

所以你这里可以写成

SELECt 学号
FROM 选课
WHERe 课程号 in ('C1' ,’C2')
全部回答
你的语句有问题应该这样 select id , name from test where id in('1001','1005','1003'); 如果你想按顺序的话 这样就可以 select id , name from test where id='1001' union all select id , name from test where id='1005' union all select id , name from test where id='1003'
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
最近想换眼镜,在眼科医院换两块镜片要六七百
川乐小镇麻辣香锅在哪里啊,我有事要去这个地
昆明哪里有大耳朵图图玩具
苏家庄街/鄯善路(路口)在哪里啊,我有事要去
哈尔滨哪所本科大学,分数最低,管理最严格
煮熟的糯米饭摊凉后,放入酵母菌,密封,发酵
sign up和sign in二者有何区别?
坪山到龙华富士康怎么坐车
测定总氮时在275nm总是为什么呈负数,我检查
维韵手足会馆怎么去啊,有知道地址的么
刀的哲学.是它太假了.还是我没看明白
侠盗飞车罪恶都市有没有手机版跳高秘籍啊?
同济大学拿奖学金不可以有中么?
上海铭玖酒店管理有限公司是骗人的吗?
宏志英语在哪里啊,我有事要去这个地方
推荐资讯
高德地图导航的时候走到红绿灯和测速的地方怎
跟着旅行社出国中途有事必须返程怎么处理
图里面这个人是谁啊~~~~~~请告诉我他的名字和
寻仙 癫僧口中的囹圄在哪
两人同行,一人踩在另一人脚上,摔伤,该谁负责
大学英语六级考了541,低不低?还需不需要刷
上月未计提税金,下月怎么做分录?
平面设计会软件但做不出来的人有没有?
世界哪五大高档护肤品
他喜欢帮助别人 ,,我们都喜欢他。这句话用英
马自达wagon与马自达6的长度、宽度一样吗?
爱普生 L201 补充装怎么充墨
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?