一、原题
二、题目翻译
三、题目解析
Evaluate the following SQL statement:
SQL>SELECT cust_id, cust_last_name
FROM customers
WHERE cust_credit_limit IN
(SELECT cust_credit_limit
FROM customers
WHERE cust_city = 'Singapore');
Which statement is true regarding the above query if one of the values generated by the subquery is NULL?
A. It produces an error.
B. It executes but returns no rows.
C. It generates output for NULL as well as the other values produced by the subquery.
D. It ignores the NULL value and generates output for the other values produced by the subquery.
答案:C
SQL>SELECT cust_id, cust_last_name
FROM customers
WHERE cust_credit_limit IN
(SELECT cust_credit_limit
FROM customers
WHERE cust_city = 'Singapore');
Which statement is true regarding the above query if one of the values generated by the subquery is NULL?
A. It produces an error.
B. It executes but returns no rows.
C. It generates output for NULL as well as the other values produced by the subquery.
D. It ignores the NULL value and generates output for the other values produced by the subquery.
答案:C
二、题目翻译
评估下面的SQL语句
关于上面的查询如果子查询返回值中其中有一个值为NULL,下面哪句话是正确的?
A.报错。
B.执行但不返回行。
C.对于NULL和子查询的其它值会有输出。
D.忽略NULL值,并且对于子查询的其它值会有输出。
关于上面的查询如果子查询返回值中其中有一个值为NULL,下面哪句话是正确的?
A.报错。
B.执行但不返回行。
C.对于NULL和子查询的其它值会有输出。
D.忽略NULL值,并且对于子查询的其它值会有输出。
三、题目解析
in后面的列表中有null值的,
比如: id in( null,200),
那么,变换一下,就变成id = null or id = 200,因为id=null是不成立的,所以相当于 false or id=200
所以说,没有输出null值,只是因为表达式不成立,并不是忽略了null值。
比如: id in( null,200),
那么,变换一下,就变成id = null or id = 200,因为id=null是不成立的,所以相当于 false or id=200
所以说,没有输出null值,只是因为表达式不成立,并不是忽略了null值。