Я пытаюсь обновить только определенные строки в таблице, но другие получают NULL'd - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь выполнить простой запрос на обновление определенного набора строк в моей базе данных sqlite. Это работает, но оно обнуляет все остальные строки. Вот запрос:

update table1 set col5 =(select col5 from table2 where table2.id = table1.id)

Я знаю, что это очень легко, но я не могу понять, что происходит. Разве я не могу обновить только определенные строки и оставить остальные в покое?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

попробуйте это:

update table1 inner join table2 on table1.id = table2.id
set table1.col5 = table2.col5

Edit:

Извините, не понял, что это sqlite. sqlite не поддерживает объединения в предложении обновления. Я думаю, вы могли бы сделать следующее:

update table1 set col5 = (select col5 from table2 where table2.id = table1.id)
where id IN (SELECT id FROM table2)
1 голос
/ 06 декабря 2011

Вы используете те же столбцы, которые обновляете, чтобы связать две таблицы. Вы должны использовать первичный или вторичный ключ , чтобы связать две таблицы.

См. Этот очень похожий вопрос и ответ на него: Обновление SQL из одной таблицы в другую на основе совпадения идентификатора

...