改写成hive语法 update "rpt_wjq_jf_value_dhfz_list" as "a" set "a"."subst_name" = "b"."aliasname", "a"."seq_id" = "b"."seq_id" from "dim_subst" as "b" where "a"."subst_id" = "b"."subst_id";
时间: 2023-06-28 11:12:18 浏览: 110
test_hive.rar_ThriftHive.php_hive_hive php_php hive_php hive Thr
抱歉,Hive不支持UPDATE语句中的FROM子句。您可以使用INSERT OVERWRITE语句将符合条件的数据写入新表或分区,然后删除原始表或分区。例如:
```
INSERT OVERWRITE TABLE rpt_wjq_jf_value_dhfz_list
SELECT b.aliasname AS subst_name, b.seq_id, a.col3, a.col4, ...
FROM rpt_wjq_jf_value_dhfz_list a
JOIN dim_subst b ON a.subst_id = b.subst_id;
```
请注意,此语句将替换原始表中的所有列,因此需要在SELECT子句中包括所有需要保留的列。如果需要保留除了subst_name和seq_id以外的所有列,可以使用以下语句:
```
INSERT OVERWRITE TABLE rpt_wjq_jf_value_dhfz_list
SELECT CASE WHEN a.subst_id = b.subst_id THEN b.aliasname ELSE a.subst_name END AS subst_name,
CASE WHEN a.subst_id = b.subst_id THEN b.seq_id ELSE a.seq_id END AS seq_id,
a.col3, a.col4, ...
FROM rpt_wjq_jf_value_dhfz_list a
LEFT JOIN dim_subst b ON a.subst_id = b.subst_id;
```
这会在保留原始表中的所有列的同时更新subst_name和seq_id。
阅读全文