我试图通过相关更新来更新具有多个值(Y / N)的单列,但出现错误时可以使用:
ORA-01427:单行子查询返回多个行。
我有两张桌子。
REQUESTS_TABLE
+-------------+------+
| CUSTOMER_ID | FLAG |
+-------------+------+
| 200 | |
| 900 | |
+-------------+------+
CREDITS_TABLE
+-------------+---------------+
| CUSTOMER_ID | CUSTOMER_NAME |
+-------------+---------------+
| 100 | John |
| 200 | Smith |
| 300 | Mary |
| 400 | David |
| 500 | Jake |
+-------------+---------------+
如果贷方表中存在来自请求表的customer_id,那么我想将请求表中的“ FLAG”列更新为“ Y”。如果找不到,则为“ N”。以下是我试图获取的输出:
输出: REQUESTS_TABLE
+-------------+------------+
| CUSTOMER_ID | FOUND_FLAG |
+-------------+------------+
| 200 | Y |
| 900 | N |
+-------------+------------+
以下是我尝试过的查询,导致错误:
UPDATE requests_table r
SET ( flag ) = (SELECT CASE
WHEN c.customer_id IS NOT NULL THEN 'Y'
ELSE 'N'
END
FROM credits_table c
WHERE c.customer_id = r.customer_id)
WHERE EXISTS (SELECT *
FROM credits_table c
WHERE c.customer_id = r.customer_id)
当我在线搜索帮助时,我发现查询会更新多个列,但不会更新单个列中的多个值。因此在这里寻求帮助。
感谢任何帮助。
谢谢,理
查
您可以使用:
UPDATE requests_table
SET found_flag = CASE WHEN EXISTS(SELECT c.customer_id FROM credits_table c
WHERE c.customer_id = requests_table.customer_id)
THEN 'Y'
ELSE 'N'
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句