设教师表的结构为:(教师号、姓名、性别、职称、工资、所在系)。若要查询其他系中比计算机系所有教师工资都高的教师的姓名和工资,正确的SELECT语句是 ______。

admin2010-06-12  22

问题 设教师表的结构为:(教师号、姓名、性别、职称、工资、所在系)。若要查询其他系中比计算机系所有教师工资都高的教师的姓名和工资,正确的SELECT语句是 ______。

选项 A、SELECT姓名,工资FROM教师表WHERE工资>ANY(SELECT工资; FROM教师表WHERE所在系=“计算机”)AND所在系<>计算机
B、 SELECT姓名,工资FROM教师表WHERE工资>(SELECT MIN(工资); FROM教师表WHERE所在系=“计算机”)AND所在系<>计算机
C、 SELECT姓名,工资FROM教师表WHERE工资>ALL(SELECT工资; FROM教师表WHERE所在系=“计算机”)AND所在系<>计算机
D、 SELECT姓名,工资FROM教师表WHERE工资>(SELECT MAX(工资); FROM教师表WHERE所在系=“计算机”AND所在系<>计算机)

答案4

解析 本查询是基于教师表查询其他系中比计算机系所有教师工资都高的教师的姓名和工资,4个选项中都使用了子查询。选项A中子查询给出了计算机系所有教师的工资的集合,子查询前的量词ANY代表任意一个,AND前后是并列的条件,该语句查询的是非计算机系中工资大于计算机系任何一个教师的工资的教师的姓名和工资,或者说是查询非计算机系中工资比计算机系最低工资高的教师的姓名和工资,假如,计算机系教师的工资集合是(1500,1300,900),那么查询的是所有不是计算机系且工资高于900的教师,该选项不合题义。选项B中子查询使用了函数MIN求出了计算机系最低工资,查询的结果是找出非计算机系中工资比计算机系最低工资高的教师姓名和工资,同选项A一样,不合题义;选项C中子查询给出了计算机系所有教师的工资的集合,子查询前的量词ALL代表全部,该语句查询的是非计算机系中工资大于计算机系所有教师的工资的教师的姓名和工资,或者说是查询非计算机系中工资比计算机系最高工资都高的教师的姓名和工资,假如,计算机系教师的工资集合是(1500,1300,900),那么查询的是所有不是计算机系且工资高于1500的教师,该选项符合题义,是正确的。选项D中子查询使用了函数MAX求出了计算机系最高丁资,按题义应该是正确的,但是由于将并列条件“所在系<>计算机”放在于查询之内,造成逻辑表达错误,因此也是错误。
转载请注明原文地址:https://jikaoti.com/ti/IHe0FFFM
0

最新回复(0)