nithin793 Ответов: 1

Как обновить все mid to min на основе eid, присутствующего в другой таблице


mbr table

eid     mid
1       15           for eid 1, mid 14 is the min value
1       14
2       18           for eid 2, mid 17 is the min value
2       17
3       19           for eid 3, mid 19 is the min value
3       20

nm table

mid     nmid
15      100
14      104
18      109
17      108
19      999
20      110


expected output

nm table

mid     nmid
14      100   
14      104
17      109   
17      108
19      999
19      110    


for eid 1,mid 14 is min compared to 15 so it should update 15 to 14 in nm table 
for eid 2,mid 17 is min compared to 18 so it should update 18 to 17 in nm table
for eid 3,mid 19 is min compared to 20 so it should update 20 to 19  in nm table


Что я уже пробовал:

я попытался с помощью логики выбора максимум середины с MBR-таблица и выберите пункт мин нм от середины таблицы и использовать запрос на обновление для обновления Макс до мин. это обновление каждую вещь.
не могли бы вы, пожалуйста, помочь[ в этом.

пожалуйста дайте мне знать если вам нужна какая либо информация

1 Ответов

Рейтинг:
8

Maciej Los

Проверить это:

DECLARE @mbr TABLE(eid INT, mid INT)
INSERT INTO @mbr(eid, mid)
VALUES(1, 15), (1, 14), (2, 18),
(2, 17), (3, 19), (3, 20)

DECLARE @nm TABLE(mid INT, nmid INT)
INSERT INTO @nm(mid, nmid)
VALUES(15, 100), (14, 104), (18, 109),
(17, 108), (19, 999), (20, 110)

UPDATE t1
SET t1.mid = t2.minmid
FROM @nm AS t1
    INNER JOIN (
		SELECT eid, mid, MIN(mid) OVER(PARTITION BY eid ORDER BY mid) AS minmid
		FROM @mbr
	) AS t2 ON t1.mid = t2.mid

SELECT *
FROM @nm


Результат:
mid	nmid
14	100
14	104
17	109
17	108
19	999
19	110


Для получения более подробной информации, пожалуйста, смотрите: Как выполнить обновление с помощью SELECT в SQL Server? - переполнение стека[^]