xxxxxxxxxx
CREATE TABLE table_update
(
id1 NUMBER(2,0)
, desc1 VARCHAR(2)
, desc2 VARCHAR(2)
);
xxxxxxxxxx
INSERT INTO table_update (id1, desc1, desc2) VALUES (1, 'A', 'X');
INSERT INTO table_update (id1, desc1, desc2) VALUES (2, 'B', 'Y');
INSERT INTO table_update (id1, desc1, desc2) VALUES (3, 'C', 'Z');
COMMIT;
xxxxxxxxxx
UPDATE table_update
SET
id1 = 11
, desc1 = 'V'
WHERE id1 = 1;
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1
----- -----
11 V
2 B
3 C
xxxxxxxxxx
UPDATE table_update t1
SET
id1 = id1 * 10
, t1.desc1 =
(
SELECT t2.desc1 || t1.desc1
FROM table_update t2
WHERE t2.id1 = t1.id1
)
WHERE t1.id1 = 1;
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1
----- -----
10 AA
2 B
3 C
xxxxxxxxxx
UPDATE table_update t1
SET (t1.desc1, t1.desc2) = (
SELECT (t2.desc1 || t1.desc1), (t2.desc2 || t1.desc2)
FROM table_update t2
WHERE t2.id1 = t1.id1
);
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1 desc2
----- ----- -----
1 AA XX
2 BB YY
3 CC ZZ
xxxxxxxxxx
UPDATE table_update t1
SET (t1.desc1, t1.desc2) = (
SELECT (t2.desc1 || t1.desc1), (t2.desc2 || t1.desc2)
FROM table_update t2
);
xxxxxxxxxx
Error starting at line 1 in command:
UPDATE table_update t1
SET (t1.desc1, t1.desc2) = (
SELECT (t2.desc1 || t1.desc1), (t2.desc2 || t1.desc2)
FROM table_update t2
)
Error report:
SQL Error:
ORA-01427: single-row subquery returns more than one row
01427. 00000 - "single-row subquery returns more than one row"
*Cause:
*Action:
xxxxxxxxxx
UPDATE table_update t1
SET (t1.desc1, t1.desc2) = (
SELECT (t2.desc1 || t1.desc1), (t2.desc2 || t1.desc2)
FROM table_update t2
WHERE t2.id1 = t1.id1
AND t2.id1 < 3
);
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1 desc2
----- ----- -----
1 AA XX
2 BB YY
3
xxxxxxxxxx
UPDATE table_update t1
SET (t1.desc1, t1.desc2) = (
SELECT (t2.desc1 || t1.desc1), (t2.desc2 || t1.desc2)
FROM table_update t2
WHERE t2.id1 = t1.id1
AND t2.id1 < 3
)
WHERE t1.id1 < 3;
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1 desc2
----- ----- -----
1 AA XX
2 BB YY
3 CC ZZ
xxxxxxxxxx
UPDATE
(
SELECT desc1, desc2
FROM table_update t2
WHERE t2.id1 = 3
)
SET desc1 = desc1 || desc1
, desc2 = desc2 || desc2;
table_update
" :xxxxxxxxxx
SELECT id1, desc1 FROM table_update;
xxxxxxxxxx
id1 desc1 desc2
----- ----- -----
1 A X
2 B Y
3 CC ZZ