Как ОБНОВИТЬ из столбцов в прикрепленной базе данных в sqlite3? - PullRequest
1 голос
/ 19 марта 2012

После 4 часов поиска в Google и еще нескольких часов экспериментов моя последняя надежда состоит в том, что кто-то может сказать мне, что происходит, когда я попробую следующее:

    sqlite3 test1.sqlite
    attach database 'test2.sqlite' as newDB;

Это работает - никаких сообщений об ошибках и«.databases» показывает «newDB» как # 2.«newDB» и «main» имеют одинаковую структуру: одинаковые таблицы, одинаковые столбцы, одинаковые имена для всего.Работает такая простая вещь, как

    select * from main.ztip;

или

    select * from newDB.ztip;

.(«ztip», очевидно, является допустимым именем таблицы в обеих БД.) Но когда я пытаюсь сделать то, что мне нужно сделать (для простоты опущено предложение WHERE)

    update main.ztip set zisfavorite=newDB.ztip.zisfavorite;

BOOM!Столбец "newDB.ztip.zisfavorite" не найден.То же самое относится к

    update main.ztip set zisfavorite=newDB.zisfavorite;

, который я испытал от отчаяния.(Имена столбцов уникальны.)

Кто-нибудь знает, возможно ли то, что я хочу сделать, и как заставить работать?

Заранее спасибо, Том

1 Ответ

3 голосов
/ 19 марта 2012

Не совсем понятно, что вы пытаетесь обновить здесь.

Вы можете использовать UPDATE my_table SET col_a=col_b, когда col_a и col_b являются столбцами в одной таблице: это обновит установленное значение col_b в col_b для каждого ряда.col_b это не просто имя столбца, но в данном случае оно связано с определенным значением.

Однако в update main.ztip set zisfavorite=newDB.ztip.zisfavorite, newDB.ztip.zisfavorite представляет весь столбец.Нет никаких причин знать, какую строку и значение вы хотите использовать.

Возможно, вам следует использовать что-то вроде:

UPDATE main.ztip z1 SET zisfavorite=(SELECT z2.zisfavorite FROM newDB.ztip z2 WHERE z2.id=z1.id)

Детали предложения where будут зависеть от фактическогоструктура ваших таблиц, конечно.Убедитесь, что он возвращает только одно значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...