2017-02-20 59 views
1

我有2個表更新不同的值每排蜂巢

table1的

key  comment 
1  null 
2  null 
3  null 
1  null 
1  null 
2  null 

表2

key  type 
1  1 
2  2 
3  3 

我需要

table1的

key  comment 
1  1 
2  2 
3  3 
1  1 
1  1 
2  2 

我試過了。

UPDATE table1 hist 
SET comment = (
    Select type 
    from table2 mta 
    WHERE hist.key = mta.key 
    ); 

沒有工作。子查詢似乎不受支持。剩下的唯一的事情就是做一個左連接,但我很好奇,如果沒有它可能。

這些是創建語句。 SHOW CREATE TABLE

CREATE TABLE `db.evkuz`(
    `subs_key` string, 
    `mtr_comments` string) 
ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 

CREATE VIEW `db.RCR` AS 
Select `a`.`line`[64] as `SUBS_KEY` 
, `a`.`line`[63] as `TYPE` 
from(
    Select split(`rcr`.`line`, '\\|') as `LINE` 
    from `db`.`MAK_RCR` 
) `a` 

這些describe table

evkuz

subs_key    string 
mtr_comments   string 

RCR的結果

subs_key    string 
type     string 

這是更新語句

UPDATE t1 
SET t1.MTR_COMMENTS = t2.TYPE 
FROM db.evkuz t1 
inner join db.RCR t2 
on t1.SUBS_KEY = substr(t2.SUBS_KEY, 2); 

回答

0

試試這個

update t1 
set t1.comment =t2.type 
from 
dbo.Table_1 t1 
inner join dbo.Table_2 t2 ON t2.keys = t1.keys 
+0

我得到'失敗:ParseException的行2: '' 6輸入不匹配在更新語句中期待=接近't1' –

+0

@Eugene Cuz檢查兩列的數據類型 – mangesh

+0

@Eugene Cuz發送你的兩個表腳本 – mangesh