Обновите все строки таблицы с помощью SQL соединения - PullRequest
0 голосов
/ 20 мая 2019

У меня есть таблица 1 со столбцами

  • RunID
  • SeqNo_In_Run
  • PrimitiveID

У меня есть таблица2 со столбцами

  • RunID
  • SeqNo_In_Run
  • некоторые другие столбцы

(RunID и SeqNo_In_Run) - первичный ключ в обеих таблицах

Я хочу добавить столбец PrimitiveID в таблицу 2, где RunID и seqno_in_run совпадают для каждой строки.

Я последовал этому ответу и написал что-то вроде этого:

update GPS_Snapped 
set GPS_Snapped.PrimitiveID = GPS_Snapped_New.PrimitiveID
from GPS_Snapped
inner join GPS_Snapped_New
on GPS_Snapped.RunID=GPS_Snapped_New.RunID and 
GPS_Snapped.SeqNo_In_Run=GPS_Snapped_New.SeqNo_In_Run
where GPS_Snapped.RunID=GPS_Snapped_New.RunID and 
GPS_Snapped.SeqNo_In_Run=GPS_Snapped_New.SeqNo_In_Run

но это дает мне ошибку около set GPS_Snapped.PrimitiveID, что invalid column name PrimitiveID, но я добавил новый столбец PrimitiveID в GPS_Snapped, и если я делаю простое обновление (например, таблица обновлений set col1 = val, где условие), это работает нормально. Можете ли вы помочь мне, что не так с моим сценарием.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Попробуйте:

SQL DEMO

update g
set g.PrimitiveID = n.PrimitiveID
from Table1 g
inner join Table2 n
  on g.RunID = n.RunID
 and g.SeqNo_In_Run = n.SeqNo_In_Run;

Кстати, вам не нужно повторять условие JOIN для WHERE

0 голосов
/ 20 мая 2019

Имеет ли GPS_Snapped_New столбец Primitive_ID?Кроме того, вам не нужно выражение WHERE, если у вас уже есть условие объединения ON.

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