Присоединение обновления SQLite3 не работает

Я пробовал все, что видел здесь и на других сайтах. Я начинаю думать, что невозможно выполнить объединение обновлений с SQLite3 (V 1.2.2) и SQLite (V 3.7.3). Я много лет работаю разработчиком MSSql Server. SQLite — это другое животное. Если бы у меня была возможность Cursor в TSQL, я бы так и поступил. Приведенный ниже запрос основан на том, что было предложено на нескольких сайтах. Вот моя последняя попытка, которая не работает.

update alertsettings
   set IP_Desc = (select temp_tbl.Import_Rec
                    from alertsettings,
                         temp_tbl
                   where temp_tbl.IPAddress = alertsettings.IPAddress)

Это должно обновить каждую запись соответствующим описанием, связанным с совпадающим IP-адресом, на основе примеров, которые я видел. Все IP уникальны. Он обновляется, но обновляет все записи с одинаковым IP_Desc. Из 576 записей ему соответствует одна запись. Я не уверен, почему это должно работать, потому что нет никакой связи с текущей обновляемой записью. «Выбор» присоединяется к «Выбору», а не к «Обновлению».

Спасибо - Хозяин


person user2795983    schedule 19.09.2013    source источник


Ответы (1)


Когда вы пишете alertsettings.IPAddress, значение берется из самой внутренней таблицы, которая соответствует имени alertsettings. В вашем запросе это alertsettings во внутреннем select, который не зависит от записи во внешнем update.

На самом деле вам не нужно объединение, вы хотите, чтобы подзапрос просто искал одно значение из другой таблицы:

update alertsettings
   set IP_Desc = (select Import_Rec
                    from temp_tbl -- no second table here
                   where IPAddress = alertsettings.IPAddress)
person CL.    schedule 19.09.2013