设数据库有如下表: 作者表(作者号,姓名,电话) 投稿表(作者号,投稿日期,文章名,审稿结果) 作者表中保存的是所有投过稿的作者信息,不保存没有投稿的作者。现在查询所投文章中,所有审稿结果都是通过的作者号和姓名,下面语句正确的是(

admin2016-06-28  23

问题 设数据库有如下表:
    作者表(作者号,姓名,电话)
    投稿表(作者号,投稿日期,文章名,审稿结果)
    作者表中保存的是所有投过稿的作者信息,不保存没有投稿的作者。现在查询所投文章中,所有审稿结果都是通过的作者号和姓名,下面语句正确的是(    )。

选项 A、SELECT作者号,姓名FROM作者表;
WHERE作者号=(SELECT作者号FROM投稿表WHERE审稿结果=’通过’)
B、SELECT作者号,姓名FROM作者表;
WHERE作者号IN(SELECT作者号FROM投稿表WHERE审稿结果=’通过’)
C、SELECT作者号,姓名FROM作者表;
WHERE作者号NOT IN(SELECT作者号FROM投稿表WHERE审稿结果!=’通过’)
D、SELECT作者号,姓名FROM作者表;
WHERE作者号EXISTS(SELECT作者号FROM投稿表WHERE审稿结果=’通过’)

答案C

解析 此处涉及嵌套查询和量词谓词查询的知识,根据题目分析可知需要采用嵌套SQL语句进行查询,格式为:SELECT[字段名]FROM[表名]WHERE[条件]。NOT EXISTS是一个子查询,EXISTS是谓词,EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组用来返回子查询结果。用WHERE条件查询语句查询审稿结果为通过的记录,本题主要考查子查询的概念,首先分析题意:查询所投文章中,所有审稿结果都是通过的作者号和姓名。每个作者可能投稿多次,但可能存在审稿结果通过和未通过两种情况。本题需要找出所投稿件全部审核通过的作者信息。若子查询为SELECT作者号FROM投稿表WHERE审稿结果=’通过’,返回结果仅为审稿结果通过部分的作者信息,但不能确定此作者的所有稿件全部为审核通过。因此,选项A,B,D均不正确。C选项子查询语句SELECT作者号FROM投稿表WHERE审稿结果!=’通过’,返回结果为稿件审核结果为未通过的作者号,只要有稿件审核未通过就从作者表里面排除掉。因此C选项的查询结果为从作者表中排除有稿件审核不通过的记录,剩下的全部为审稿结果通过的作者信息。故本题选择C选项。
转载请注明原文地址:https://jikaoti.com/ti/hek0FFFM
0

最新回复(0)