2016-11-09 15 views
0

sqliteテーブルを別のテーブルから取得した値で更新しようとしていますが、キーフィールドの一致する値を条件としていますが、それを行う方法がわかりません。 postgresのでsqliteで相関クエリ操作を実行する方法

私は

drop table if exists zzzz_tab_1; 
drop table if exists zzzz_tab_2; 
drop table if exists zzzz_tab_3; 

create table zzzz_tab_1 (nr int , x_names varchar(20)); 
create table zzzz_tab_2 (nr int , x_age int); 
create table zzzz_tab_3 (nr int , x_names varchar(20), x_age int); 

INSERT INTO zzzz_tab_1 (nr, x_names) VALUES (1, 'AB'); 
INSERT INTO zzzz_tab_1 (nr, x_names) VALUES (2, 'BA'); 
INSERT INTO zzzz_tab_1 (nr, x_names) VALUES (3, 'CD'); 

INSERT INTO zzzz_tab_2 (nr, x_age) VALUES (1, 10); 
INSERT INTO zzzz_tab_2 (nr, x_age) VALUES (3, 20); 

-- add values 

-- add nr from zzzz_tab_1 
insert into zzzz_tab_3 (nr) select nr from zzzz_tab_1; 
--adding names from zzzz_tab_1 
update zzzz_tab_3 
set 
    x_names = t1.x_names 
    from (select nr, x_names from zzzz_tab_1) as t1 
    where zzzz_tab_3.nr = t1.nr; 
--adding age from zzzz_tab_2 
update zzzz_tab_3 
set 
    x_age = t1.x_age 
    from (select nr, x_age from zzzz_tab_2) as t1 
    where zzzz_tab_3.nr = t1.nr; 

select * from zzzz_tab_3; 

以下のように「相関クエリ」を使用することができます。しかし、これはsqliteの中で動作するようには思えません。 回答hereに基づいて次のコードを試しましたが、機能しません。

with tx1 
as 
(select nr, x_names from zzzz_tab_1) 
replace into 
zzzz_tab_3 
select 
zzzz_tab_3.nr, zzzz_tab_3.x_names 
from zzzz_tab_3 
inner join tx1 on tx1.nr = zzzz_tab_3.nr 

この操作はsqliteではまったく可能ですか?

- 明確化 -

基本的に私は2つのテーブルzzzz_tab_1とzzzz_tab_3

zzzz_tab_1

nr x_names 
1 AB 
2 BA 
3 CD 

zzzz_tab_3

を持っています

私はフィールド の値結果に基づいてzzzz_tab_3zzzz_tab_1からデータを追加したい(zzzz_tab_3)

zzzz_tab_3

nr x_names 
1 AB 
2 BA 
3 CD 

する必要がありますPS:ワン結合で新しいテーブルを作成できますが、私のテーブルはかなり大きいです(30 Mioレコード)

+0

あなたが解決しようとしている問題とその結果を説明してください。 –

答えて

0

他の誰かが興味を持っている場合は、同僚がこの方法を提案しました。

update zzzz_tab_3 
set 
x_names = (select x_names from zzzz_tab_1 where zzzz_tab_3.nr = zzzz_tab_1.nr); 



update zzzz_tab_3 
set 
x_age = (select x_age from zzzz_tab_2 where zzzz_tab_3.nr = 
zzzz_tab_2.nr); 

-- verify 
select * from zzzz_tab_3; 
関連する問題