2010-07-27 86 views
2

对SQL还不好,但我正在学习。更新列从另外两个表格不在列表

所以我有3个表:

tblOne(身份证,输入) tblTemp1(名称,类型) tblTemp2(ID,姓名)

基本上,我想更新tblOne在那里的' Id'与tblTemp2相匹配,但是也会从tblTemp1中'Name'匹配'Name'匹配的'Type'。

任何人都可以帮忙吗?

回答

2

我会建议在更新语句中使用连接。

UPDATE tblOne 
SET tblOne.Type = tblTemp1.Type 
FROM tblTemp2 
INNER JOIN tblTemp1 ON tblTemp1.Name = tblTemp2.Name 
WHERE tblOne.Id = tblTemp2.Id 

http://msdn.microsoft.com/en-us/library/aa260662%28SQL.80%29.aspx

+1

是增加这部分这个语法正确吗?我从来没有见过一个集合之前执行JOIN? (不要选洞,以前从未见过) – 2010-07-27 12:55:48

+0

是的,你能做到吗? – Scott 2010-07-27 12:57:16

+0

你是对的。这是一个MySQL特有的语法。我编辑了这篇文章,以使用Sql Server语法。 – 2010-07-27 12:59:20

0
UPDATE tblOne 
SET 
tblOne.Type = tblTemp1.Type 
WHERE 
tblOne.Id = tblTemp2.Id 
AND 
tblTemp1.Name = tblTemp2.Name; 
0
UPDATE TBLONE 
SET TBLONE.TYPE = (SELECT TBLTEMP1.TYPE 
         FROM TBLTEMP1 
          INNER JOIN TBLTEMP2 
            ON TBLTEMP1.NAME = TBLTEMP2.NAME 
         WHERE TBLONE.ID = TBLTEMP2.ID); 

FF,我们只需要更新满足条件
随后的发言 并在条件// where子句是可选的