2012-06-10 4 views
1

У меня есть 2 базы данных sqlite, и я пытаюсь вставить данные из одной базы данных в другую. Например, «db-1.sqlite» имеет таблицу «1 таблица» с двумя столбцами («имя», «состояние»). Кроме того, «db-2.sqlite» имеет таблицу «2table» с двумя столбцами («имя», «url»). Обе таблицы содержат список значений «имя», которые чаще всего встречаются друг с другом, но рандомизированы, поэтому идентификатор каждой строки не совпадает.данные sqlite от одного db к другому

Я хочу вставить значения для столбца '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 

Если вы посмотрите на то, что я написал выше, вы можете сказать, что я пытаюсь выполнить, но это неверно. Если я смогу получить помощь по этому вопросу, я буду очень благодарен !!

ответ

5

Оператор сравнения равенств в SQL равен =, а не ==.

Кроме того, я подозреваю, что вы должны обновлять 1 таблицу, а не вставлять в нее.

И, наконец, имена ваших таблиц начинаются с цифр, поэтому вам нужно их избежать.

Этот SQL должен работать лучше:

update `1table` 
set url = (select db2.`2table`.url 
      from db2.`2table` 
      where `1table`.name = db2.`2table`.name); 
+0

гениальное! Я новичок в SQL. Большое вам спасибо за вашу помощь! – m10zart

Смежные вопросы