Casper-SC
@Casper-SC
Программист (.NET)

T-SQL. Как сделать UPDATE записей в таблице, у которых совпадает, например, GroupID, но разные TypeID?

Как составить запрос так, чтобы можно было проапдейтить записи (1, 3, N'1 Дмитрий', 0) и (2, 3, N'2 Сергей', 0) по GroupID мы определяем две записи, одна из которых будет получать значение Number из другой. Если у записи TypeID = 1, то значит из этой записи нужно брать значение и присвоить его записи, у которой совпадает GroupID и TypeID = 3.

То есть в итоге будет
(1, 1, N'1 Владимир', 10),
(1, 3, N'1 Дмитрий', 10), и

(2, 1, N'2 Андрей', 20),
(2, 3, N'2 Сергей', 20).

IF OBJECT_ID('Users') IS NOT NULL 
  DROP TABLE Users;

CREATE TABLE Users(
  GroupID INT NOT NULL,
  TypeID INT NOT NULL,
  Name NVARCHAR(40) NOT NULL,
  Number INT NOT NULL,
  CONSTRAINT PK_Users_UserID PRIMARY KEY(GroupID, TypeID),
  );
GO

INSERT INTO Users (GroupID, TypeID, Name, Number)
  VALUES 
    (1, 1, N'1 Владимир', 10),
    (1, 3, N'1 Дмитрий', 0),

    (2, 1, N'2 Андрей', 20),
    (2, 3, N'2 Сергей', 0)
GO
  • Вопрос задан
  • 351 просмотр
Решения вопроса 1
UPDATE UserDestination
SET
  Number = UserSource.Number
FROM
  Users AS UserSource
INNER JOIN
  Users AS UserDestination
ON
  UserSource.GroupID = UserDestination.GroupID
  AND UserSource.TypeID = 1
  AND UserDestination.TypeID = 3
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы