2014-09-12 81 views
0

我想将用户id 1的年份级别从tbl_profile更改为'3rd',并且我想从表中引用名称'captain america',因为他们拥有相同的user_id。加入两个表并更新列值

这里是我的示例表:

tbl_profile 
users_id year_level 
1   none 

tbl_usersinfo 
users_id  full_name 
1   captain america 

这里是我的查询:

UPDATE tbl_profile AS p 
SET p.year_level = '3rd' 
LEFT JOIN 
tbl_usersinfo AS i 
ON 
i.users_id = p.users_id 
WHERE 
i.full_name = 'captain america'; 

我希望它是这样的,但我知道,这个查询是不可能的,因为我的天堂” t指定了full_name列的来源:

UPDATE tbl_profile AS p 
SET p.year_level = '3rd' 
WHERE i.full_name = 'captain america' 
LEFT JOIN 
tbl_usersinfo AS i 
ON 
i.users_id = p.users_id 
+1

您可以使用In ...更新...我在哪里(从tbl_usersinfo选择user_id,其中full_name ='美国队长') – okaram 2014-09-12 14:13:40

回答

2

使用此查询:

UPDATE tbl_profile 
SET year_level='3rd' 
WHERE users_id IN (
    SELECT users_id 
    FROM tbl_usersinfo WHERE full_name = 'captain america'); 
+0

http://sqlfiddle.com/#!2/221a6b/1 – 2014-09-12 14:27:56

+0

WOOOAH,THANKS BROOOOO! :))我真的需要这个查询。 – 2014-09-12 14:29:19

+0

@monkeycoder检查将帮助你http://sqlfiddle.com/#!2/221a6b/1 – 2014-09-12 14:30:33