# 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;

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

D的子查询条件不正确，

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

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.