0

sqlite テーブルを更新したいのですが、以下は 1 つの行を更新する例です。

update tpecroad set tnode = (SELECT  b.nodeid FROM "TPECRoad" as a
join tpecnode as b 
where pointn(a.geometry,numpoints(a.geometry)) = b.geometry and a.pk =1)
where pk=1

しかし、更新する行が 168432 あります。大量のデータを更新するより高速な方法はありますか?

a.pk=1~168432 と pk=1~168432 を変更したようなものです

どうもありがとうございます!!

4

3 に答える 3

0

質問を正しく理解していれば、次のクエリが役立つ場合があります。

update tpecroad a set tnode = (
    select b.nodeid from tpecnode b
    where pointn(a.geometry,numpoints(a.geometry)) = b.geometry
)
where exists (
    select 1 from tpecnode b
    where pointn(a.geometry,numpoints(a.geometry)) = b.geometry
);

編集: 更新を実行するために a.pk = b.pk を検証する必要がある場合、クエリは次のようになります。

update tpecroad a set tnode = (
    select b.nodeid from tpecnode b
    where pointn(a.geometry,numpoints(a.geometry)) = b.geometry
        and a.pk = b.pk
)
where exists (
    select 1 from tpecnode b
    where pointn(a.geometry,numpoints(a.geometry)) = b.geometry
        and a.pk = b.pk
);
于 2015-02-17T19:37:22.187 に答える
0

これを試して:

Update tpecroad a
set tnode = (SELECT b.nodeid 
FROM tpecnode as b 
where pointn(tpecroad.geometry,numpoints(tpecroad.geometry)) = b.geometry)
于 2015-02-16T15:05:21.397 に答える
0
update tpecroad as c
set tnode = ( SELECT  b.nodeid 
              FROM "TPECRoad" as a join tpecnode as b 
              where pointn(a.geometry,numpoints(a.geometry)) = b.geometry and a.pk = c.pk);
于 2015-02-16T09:47:45.943 に答える