我有两张桌子,其中一张是这样的:
表1:
ID- Name- Code- Code 2-
1- John- 115-null
2- Rick- 652-null
3- Jones- 886-null
4- James- 554-null
5- Elton- 125-null
6- Craig- 214-null
7- John- 452-null
表2:
Name- Code- Code 2-
John- 115- a
Rick- 652- b
Jones- 886- c
James- 554- d
Elton- 125- e
Craig- 214- f
John- 452- g
Craig- 886- h
Rick- 115- i
这不是真正的数据,它并不那么简单。我需要将表2中的代码2放入表1中的Code#列。为此,我需要将Name和Code列匹配,以从Column' Code 2'中获取数据。进入专栏'代码#'。它需要匹配至少两列,因为每个列都有重复...
我想最终得到类似的东西:
ID- Name- Code- Code 2-
1- John- 115-a
2- Rick- 652-b
3- Jones- 886-c
4- James- 554-d
5- Elton- 125-e
6- Craig- 214-f
7- John- 452-g
答案 0 :(得分:4)
您可以一次连接多个列上的表格,如:
select t1.id, t1.name, t1.code, t2.code2
from t1
inner join t2 on t1.name = t2.name
and t1.code = t2.code
这种方式(来自您的示例)“John 115”将仅与“John 115”而不是“John 452”匹配,因为仅在两个表之间的名称和代码相等的情况下执行连接。 (注意John 452也将加入John 452)。
如果您不知道,可以根据update
构建select
语句。您的更新语句最终会看起来像这样:
update t1
inner join t2 on t1.name = t2.name and t1.code = t2.code
set t1.code2 = t2.code2;
这将连接名称和代码匹配的两个表,并将第一个表中的code2设置为等于第二个表中的code2。
以下是SQL Fiddle示例。