1

2つのsqliteデータベースがあり、1つのデータベースから別のデータベースにデータを挿入しようとしています。たとえば、「db-1.sqlite」には、2つの列(「name」、「state」)を持つテーブル「1table」があります。また、「db-2.sqlite」には、2つの列(「name」、「url」)を持つテーブル「2table」があります。両方のテーブルには、互いにほとんど共通であるがランダム化された「name」値のリストが含まれているため、各行のIDは一致しません。

'url'列の値をdb-1のテーブルに挿入したいのですが、各url値が対応する'name'値になっていることを確認したいと思います。

これまでのところ、私はこれを行いました:

> sqlite3 db-1.sqlite
sqlite> alter table 1table add column url;
sqlite> attach database 'db-2.sqlite' as db2;

さて、私がよくわからない部分:

sqlite> insert into 1table(url) select db2.2table.url from db2.2table where 1table.name==db2.2table.name

私が上で書いたことを見ると、私が何を達成しようとしているのかがわかりますが、それは正しくありません。何かお役に立てれば幸いです!!

4

1 に答える 1

5

SQLの等式比較演算子は=、ではなく、==です。

また、1tableに挿入するのではなく、更新する必要があると思います。

最後に、テーブル名は数字で始まるため、それらをエスケープする必要があります。

このSQLはより適切に機能するはずです。

update `1table` 
set url = (select db2.`2table`.url 
           from db2.`2table` 
           where `1table`.name = db2.`2table`.name);
于 2012-06-10T12:41:52.103 に答える