Запрос на ОБНОВЛЕНИЕ обновляет все данные

#sqlite #join #sql-update

#sqlite #Присоединиться #sql-обновление

Вопрос:

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

Как возможно, что в заявлении, подобном тому, которое я указываю, обновляются все данные поля, даже имеющие внутреннее предложение?

 update temp_sq05  set tipoproynew =(  SELECT  temp_sq06.TP  FROM  temp_sq05 ts   INNER JOIN temp_sq06   ON temp_sq05.te_cod = temp_sq06.tecodmg   and temp_sq05.tipoproynew IS NULL )  

Комментарии:

1. Это возможно, потому что в вашем UPDATE заявлении нет WHERE пункта, ограничивающего область обновления.

Ответ №1:

Подзапрос, который вы используете для обновления столбца tipoproynew , должен быть соотнесен с таблицей temp_sq05 , и это невозможно сделать с помощью соединения.
Попробуйте это:

 UPDATE temp_sq05 AS t5  SET tipoproynew = (  SELECT t6.TP  FROM temp_sq06 AS t6   WHERE t6.tecodmg = t5.te_cod  ) WHERE t5.tipoproynew IS NULL;  

Если ваша версия SQLite 3.33.0 , вы можете использовать UPDATE...FROM... синтаксис:

 UPDATE temp_sq05 AS t5  SET tipoproynew = t6.TP FROM temp_sq06 AS t6  WHERE t5.te_cod = t6.tecodmg AND t5.tipoproynew IS NULL;  

Комментарии:

1. ооо; Большое вам спасибо за то, что вы спасли мне жизнь, я не знал, в чем моя вина или как решить проблему; я нигде ее не видел. Мне еще многому нужно научиться у учителей