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_3 にzzzz_tab_1からデータを追加したい(zzzz_tab_3)
zzzz_tab_3
nr x_names
1 AB
2 BA
3 CD
する必要がありますPS:ワン結合で新しいテーブルを作成できますが、私のテーブルはかなり大きいです(30 Mioレコード)
あなたが解決しようとしている問題とその結果を説明してください。 –