我有一张像这样的桌子。每次重新创建表时,UserName和不同的技能都设置为0(每天一次)(UserName和Skills to 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
所以,我要做的是使用此规则将表(通过UserName)和UPDATE表1连接起来。 如果表2中的Sill表示(In Unre)表1中的S1应更改为TRUE(1),如果表2中的技巧说In Kit,表1中的S2应更改为TRUE等。
据我所知,我会在案例中使用更新,但是我无法将联接放到两个表中。
任何想法?感谢。
答案 0 :(得分: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