问题 单项选择题

以下是表SERVICE中的内容,如果使用如下的查询语句,哪个MACHINE_ID将最后一个显示


SELECTmachine_id, service_date
FROM service
ORDER BY technician_id, service_date;

A.458745
B.687523
C.785214
D.789874
E.980076

答案

参考答案:E

解析: 这一题测试对ORDERBY子句的理解。根据有关ORDER BY子句的介绍,可以知道ORDERBY子句排序的默认顺序是升序,也就是由小到大。在以上的语句中ORDER BY子句首先是按technician_id由小到大的顺序排序的,但是这里有一个棘手的问题,那就是technician_id列有一个空值。实际上,Oracle在进行升序排序时,空值是放在最后的。虽然到目前为止还没有讲述这一点,但是可以通过下面的实验来验证这一点。
首先,启动SQL*Plus并以SCOTT用户登录Oracle数据库,之后运行如下的查询语句。
注意:一定要使用Order by comm子句,并将显示的结果按佣金(comm)的升序方式来排序。
SQL>SELECT ename, job, comm
2 FROM emp
3 Order by comm;
ENAME JOB COM
-------- ------------ ---------
TURNER SALESMAN 0
ALLEN SALESMAN 300
WARD SALESMAN 500
MARTIN SALESMAN 1400
SCOTT ANALYST
KING PRESIDENT
ADAMS CLERK
……
以上查询语句的结果清楚地表明comm为空的数据行都排列在显示结果的最后。基于以上的讨论,可以断定technician_id列为空值的那一行记录将显示在结果的最后一行,而这一行的MACHINE_ID为980076,所以选项E是正确答案。

单项选择题
单项选择题