OCP-1Z0-051-V9.02-165题

165. View the Exhibit and  examine the description for the CUSTOMERS table.

You want to update the CUST_INCOME_LEVEL and CUST_CREDIT_LIMIT columns for the customer

with the CUST_ID 2360. You want the value for the CUST_INCOME_LEVEL to have the same value as

that of the customer with the CUST_ID 2560 and the CUST_CREDIT_LIMIT to have the same value as

that of the customer with CUST_ID 2566.

Which UPDATE statement will accomplish the task?

 

A. UPDATE customers

SET cust_income_level = (SELECT cust_income_level                         

FROM customers                         

WHERE cust_id = 2560),    

cust_credit_limit = (SELECT cust_credit_limit                         

FROM customers                          

WHERE cust_id = 2566)

WHERE cust_id=2360;

B. UPDATE customers

SET (cust_income_level,cust_credit_limit) = (SELECT                                

cust_income_level, cust_credit_limit                         

FROM customers                         

WHERE cust_id=2560 OR cust_id=2566)

WHERE cust_id=2360;

C. UPDATE customers

SET (cust_income_level,cust_credit_limit) = (SELECT                                

cust_income_level, cust_credit_limit                         

FROM customers                          

WHERE cust_id IN(2560, 2566)

WHERE cust_id=2360;

D. UPDATE customers

SET (cust_income_level,cust_credit_limit) = (SELECT                                

cust_income_level, cust_credit_limit                         

FROM customers                          

WHERE cust_id=2560 AND cust_id=2566)

WHERE cust_id=2360;

Answer: A

答案解析:

参考:http://blog.csdn.net/rlhua/article/details/12885143

BC的子查询返回的是多行,所有报错。

D的子查询条件不正确,

题意说:更新CUST_ID为2360的CUST_INCOME_LEVEL和CUST_CREDIT_LIMIT列值。你想让CUST_INCOME_LEVEL的值与CUST_ID为2560的值一样,让CUST_CREDIT_LIMIT的值与CUST_ID为2566的值一样

按题意,只有A正确。

实验验证:

A

UPDATE customers
  2  SET cust_income_level = (SELECT cust_income_level                        
FROM customers                        
WHERE cust_id = 2560),   
cust_credit_limit = (SELECT cust_credit_limit                        
FROM customers                        
WHERE cust_id = 2566)
  8  WHERE cust_id=2360;
 
1 row updated.

B

sh@TESTDB> UPDATE customers
  2  SET (cust_income_level,cust_credit_limit) = (SELECT                               
cust_income_level, cust_credit_limit                        
FROM customers                        
WHERE cust_id=2560 OR cust_id=2566)
  6  WHERE cust_id=2360;
SET (cust_income_level,cust_credit_limit) = (SELECT
                                             *
ERROR at line 2:
ORA-01427: single-row subquery returns more than one row
 
 
C
sh@TESTDB> UPDATE customers
  2  SET (cust_income_level,cust_credit_limit) = (SELECT                               
cust_income_level, cust_credit_limit                        
FROM customers                        
WHERE cust_id IN(2560, 2566)
  6  WHERE cust_id=2360;
WHERE cust_id=2360
*
ERROR at line 6:
ORA-00907: missing right parenthesis
缺失右括号
添加上 右括号也报错误 single-row subquery returns more than one row
 
sh@TESTDB>  UPDATE customers
  2  SET (cust_income_level,cust_credit_limit) =
  3  (SELECT
  4  cust_income_level, cust_credit_limit FROM customers
  5  WHERE cust_id IN(2560, 2566))
  6   WHERE cust_id=2360;
(SELECT
*
ERROR at line 3:
ORA-01427: single-row subquery returns more than one row
D
sh@TEST0924> UPDATE customers
  2  SET (cust_income_level,cust_credit_limit) = (SELECT
  3  cust_income_level, cust_credit_limit    
  4  FROM customers
  5  WHERE cust_id=2560 AND cust_id=2566)
  6  WHERE cust_id=2360;

1 row updated.
原文地址:https://www.cnblogs.com/hzcya1995/p/13316837.html