Обновить значения таблицы с элементом той же строки в другой таблице - PullRequest
0 голосов
/ 29 марта 2019

У меня есть таблица A с количеством строк и функция, возвращающая таблицу B только с одной строкой.Мне нужно обновить каждое значение A.Other и A.ID стандартным значением, возвращаемым функцией в B, поэтому из:

---------- TABLE A ---------      ------------ TABLE B ------------
id     Name   ID   Other        Def_Other   Def_Province   Def_ID 
1        x    1    asqas         hello        PD            0
2        y    10   asd
3        Z    12   adf      

Таблица A должна стать:

---------- TABLE A --------- 
id     Name   ID   Other     
1        x     0   hello    
2        y     0   hello
3        Z     0   hello

Я пробовал

update dbo.Table_A 
set Other = select top 1 name FROM dbo.generate_table_b(1)

, но не смог.Можно ли это сделать без объявления переменной для каждого столбца \ типа?Мне пришлось бы редактировать ряд полей с разными типами.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Я думаю, что вы хотите:

update a
    set Other = b.name,
        id = b.Def_ID 
    from dbo.Table_A a cross join
         dbo.generate_table_b(1) b;
0 голосов
/ 29 марта 2019

Вы можете использовать APPLY:

UPDATE a
      set a.id = b.Def_ID,
          a.Other = b.Def_Other 
FROM tablea a CROSS APPLY
     (SELECT b.*
      FROM dbo.generate_table_b(1)
     ) b;  
...