Как обновить подмножество одной таблицы SQLite из всего содержимого другой? - PullRequest
1 голос
/ 28 апреля 2011

У меня есть таблица SQLite, которая должна оставаться неизменной до определенного момента. Все ожидающие изменения в записях хранятся во второй таблице с идентичными полями. В псевдокоде я хочу сделать следующее:

for each record U in secondTable
    find record R in firstTable, where R.uid = U.uid
    replace all fields in record R with those in record U

Есть ли какой-нибудь способ сформулировать команду UPDATE, чтобы сделать это одним махом? Если это помогает, вы можете вызвать поля в обеих таблицах uid, w, x, y и z, причем uid является уникальным первичным ключом.

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011
INSERT OR REPLACE into firstTable (uid, w, x, y, z) 
  SELECT uid, w, x, y, z FROM secondTable

будет работать, если uid является первичным ключом, как вы говорите.

Разрешение конфликта REPLACE задокументировано здесь

1 голос
/ 28 апреля 2011

Это:

UPDATE R 
   SET R.w = U.w, 
       R.x = U.x, 
       R.y = U.y, 
       R.z = U.z 
 WHERE R.uid = U.uid; 

... должно работать.

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