Member 10112611 Ответов: 1

Обновление верхнее число n столбцов, где N берется из другой таблицы


У меня есть одна таблица, которая дает количество элементов, которые будут обновлены в другой таблице, оба имеют один общий столбец
например

#таблица1

Тип
Цель
Itemstoupdate

#таблица2
Имя
Тип
Цель
Флаг

Мне нужно обновить флаг до 1 в #table2
для тех нет записей которые равны Itemstoupdate из таблицы 1 где тип и назначение совпадают

логика-это что-то вроде приведенной ниже ... но синтаксиса я не знаю. Пожалуйста, помогите мне

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

update top (Itemstoupdate)#table2
set Flag=1
from #table1 
where #table1.type=#table2.type and #table1.Purpose=#table2.purpose

1 Ответов

Рейтинг:
9

CHill60

К сожалению, ваша логика не будет работать - там, где у вас есть Itemstoupdate, вам нужно постоянное значение. Вы можете достичь этого, используя общее табличное выражение (CTE)

напр.

;with CTE AS
(
	SELECT ROW_NUMBER() OVER (ORDER BY NAME) AS RN,
	name, type, purpose, flag
	FROM #table2
)
Update A SET FLAG = 1
from CTE A
INNER JOIN #table1 B on  A.type = B.type and A.purpose = B.purpose
WHERE A.RN <= B.itemstoupdate
Ключевым моментом здесь является ORDER BY пункт о том, что ROW_NUMBER функция - TOP не имеет большого контекста без этого ORDER BY


Member 10112611

Большое вам спасибо за быстрый ответ
Это сработало для меня.

CHill60

С удовольствием!