coisini002 2023-04-20 18:13 采纳率: 52.3%
浏览 18
已结题

若要查询所有选了课的学生的学号和姓名,下列语句正确的是( D)

已知三个关系:S(学号,姓名,性别);C(课程编号,课程名称,学时)SC(学号,课程编号,分数)若要查询所有选了课的学生的学号和姓名,下列语句正确的是( D)
A.select 学号,姓名 from s WHERE 学号 in (select * from sc)
B.select 学号,姓名 from s WHERE in (select * from sc where s.学号=sc. 学号)
C.select学号,姓名 from s WHERE 学号 exists (select * from sc where s.学号=sc. 学号)
D.select学号,姓名 from s WHERE exists (select * from sc where s. 学号=sc. 学号)

A选项哪不对

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-21 23:59
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      正确选项为C。其他选项不正确的原因如下:

      A选项的语句错误,因为学号不能使用"in"关键字。应该使用"="或者"exists"关键字。

      B选项的语句错误,因为"where"后面只能跟条件表达式,而不能使用"in"关键字。应该使用"exists"关键字。

      D选项的语句虽然可以实现该查询,但是它的效率可能较低。因为使用了"exists"关键字,在执行时需要进行子查询中的每一行是否与外层表达式中的每一行匹配的比较,这会增加查询的时间复杂度。与之相比,C选项的"exists"子查询直接查找匹配,执行效率更高。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 专家已采纳回答 7月21日
  • 创建了问题 4月20日