表结构如下
SQL> select * from test_1;
ID NAME
---------- ----
1 a
2
3
SQL> select *from test_2;
ID NAME desc
---------- ---- ----
1 m ok
2 n no
3 o not
SQL> select * from testblock;
ID NAME
---------- ----
1 mcc
2 nvv
3 ott
现在的需求是 1.更新 test_1 把name所有为空的更新成 testblock表的内容
2.再更新test_1 把name取出第一个字母后与test_2的name匹配 如果匹配上了 就取desc列的值
test_1表中有1千万数据 更新两次太浪费时间 请高手帮个忙
------解决方案--------------------
WITH TABLE1 AS(
SELECT '1' AS ID, 'A' AS NAME FROM dual
union all
SELECT '2' AS ID, '' AS NAME FROM dual
union all
SELECT '3' AS ID, '' AS NAME FROM dual
union all
SELECT '4' AS ID, '' AS NAME FROM dual
),
TABLE2 AS (
SELECT '1' AS ID, 'M' AS NAME,'ok' AS DC FROM dual
union all
SELECT '2' AS ID, 'N' AS NAME,'NO' AS DC FROM dual
union all
SELECT '3' AS ID, 'O' AS NAME,'NOT' AS DC FROM dual
union all
SELECT '4' AS ID, 'D' AS NAME,'NOT' AS DC FROM dual
),
TABLE3 AS (
SELECT '1' AS ID, 'MCC' AS NAME FROM dual
union all
SELECT '2' AS ID, 'NVV' AS NAME FROM dual
union all
SELECT '3' AS ID, 'OTT' AS NAME FROM dual
union all
SELECT '4' AS ID, 'TTT' AS NAME FROM dual