0

我有一张像这样的桌子。每次重新创建表时,用户名和不同的技能都设置为 0(每天一次)(用户名和技能为 6)

UserName    S1      S2      S3      S4      S5      S6
MATTHEWS    0       0       0       0       0       0
FOREMANE    0       0       0       0       0       0
CASTORP     0       0       0       0       0       0
RODNEYR     0       0       0       0       0       0

...

另一张桌子。

UserName    Skill
MAITAA      In Unre
PORTALAL    Out TLG (Kit)
NAVAROLEO   In Kit

所以,我要做的是用这个规则加入表(通过用户名)和更新表 1。如果表 2 中的 Sill 表示 (In Unre) 表 1 中的 S1 应更改为 TRUE (1),如果表 2 中的 Skill 表示 In Kit,则表 1 中的 S2 应更改为 TRUE,等等。

据我所知,我将在案例中使用更新,但我无法将连接放置在两个表之间。

任何想法?谢谢。

4

1 回答 1

1

尝试这个:

在这里,我尝试只更新 S!和 S2 基于规则中的值。同样,您可以添加更多表 1 列

CREATE TABLE test6(UserName varchar(10),S1 int,S2 int,S3 int,S4 int,S5 int,S6 int)
INSERT INTO test6
VALUES('MATTHEWS',0,0,0,0,0,0),
('FOREMANE',0,0,0,0,0,0),
('CASTORP',0,0,0,0,0,0),
('RODNEYR',0,0,0,0,0,0)

select * from test6

create table test7(UserName varchar(20),Skill varchar(50))
INSERT INTO test7
VALUES('MATTHEWS','In Unre'),
('PORTALAL','Out TLG (Kit)'),
('NAVAROLEO','In Kit')

update t1 SET t1.S1 = CASE WHEN t2.Skill='In Unre' then 1 else 0 end,
              t1.S2 = CASE WHEN t2.Skill='In Kit'  then 1 else 0 end 
from test6 t1 inner join test7 t2
on t1.UserName = t2.UserName 
于 2012-08-03T12:45:47.877 回答