-1

我希望我能理解这一点,但是就这样吧。

我想要做的是从两个表中获取信息(通过 JOIN),然后将这两个表中的信息更新到第三个表中。这是我编写的一些测试代码,几乎可以完全模仿我需要做的事情。

我唯一的问题是,在最后的“SELECT * FROM @tempTable”...我不确定如何让 UPDATE 处理 @tempTable 表中的 userName 和 badgeId 列。我尝试过的一切都只是将它插入到它自己的行中,就好像我在做一个 INSERT ...

任何帮助表示赞赏。我在 MS SQL Server 2008 R2 中编写并运行了代码,所以它应该可以工作。

/* Create the 'Users' table */

DECLARE @Users TABLE(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    userName varchar(100),
    UserId int)

INSERT INTO @Users (userName, UserId)
VALUES ('jim', 100), 
       ('kira', 200),
       ('ken', 300),
       ('dan', 400),
       ('len', 500)

/* Create the 'Badges' table */
DECLARE @Badges TABLE(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    badgeId varchar(100),
    userId int)

INSERT INTO @Badges (badgeId, UserId)
VALUES (10, 100), 
       (20, 200),
       (30, 300),
       (40, 400),
       (50, 500)

/* Create the '@tempTable' */   
DECLARE @tempTable TABLE(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    userName varchar(100),
    badgeId int,
    divNumber int,
    secNumber int)  

INSERT INTO @tempTable (badgeId, userName, divNumber, secNumber)
VALUES (null, null, 68, 34),
       (null, null, 68, 34),
       (null, null, 69, 24),
       (null, null, 69, 24),
       (null, null, 70, 14)

/* Select userNames and badgeIds from the 'Users' and 'Badges' tables */    
SELECT u.userName, b.badgeId
FROM @Users as u
    INNER JOIN @Badges as b
    ON b.userId = u.UserId

/* Select all information from the '@tempTable' table */
SELECT * FROM @tempTable

在此处输入图像描述

4

1 回答 1

1

如果我理解您的要求正确,请尝试在最后使用此更新声明。

update @tempTable
set userName =  u.userName, 
badgeId = b.badgeId
FROM @Users as u
INNER JOIN @Badges as b
ON b.userId = u.UserId
于 2013-08-16T18:22:08.047 回答