对SQL还不好,但我正在学习。更新列从另外两个表格不在列表
所以我有3个表:
tblOne(身份证,输入) tblTemp1(名称,类型) tblTemp2(ID,姓名)
基本上,我想更新tblOne在那里的' Id'与tblTemp2相匹配,但是也会从tblTemp1中'Name'匹配'Name'匹配的'Type'。
任何人都可以帮忙吗?
对SQL还不好,但我正在学习。更新列从另外两个表格不在列表
所以我有3个表:
tblOne(身份证,输入) tblTemp1(名称,类型) tblTemp2(ID,姓名)
基本上,我想更新tblOne在那里的' Id'与tblTemp2相匹配,但是也会从tblTemp1中'Name'匹配'Name'匹配的'Type'。
任何人都可以帮忙吗?
我会建议在更新语句中使用连接。
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
UPDATE tblOne
SET
tblOne.Type = tblTemp1.Type
WHERE
tblOne.Id = tblTemp2.Id
AND
tblTemp1.Name = tblTemp2.Name;
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子句是可选的
是增加这部分这个语法正确吗?我从来没有见过一个集合之前执行JOIN? (不要选洞,以前从未见过) – 2010-07-27 12:55:48
是的,你能做到吗? – Scott 2010-07-27 12:57:16
你是对的。这是一个MySQL特有的语法。我编辑了这篇文章,以使用Sql Server语法。 – 2010-07-27 12:59:20