【问题标题】:How to create crosswalk table to match people with different id's?如何创建人行横道表以匹配具有不同身份的人?
【发布时间】:2013-11-15 17:39:20
【问题描述】:

我有 2 个包含相同信息的表格,包括:身份证、姓名、地址、邮政编码、电话号码。但是,每张桌子上同一个人的 ID 不同。如何根据其余信息创建人行横道表以匹配 id?

前)

表1

ID   | Name     | Address     | Zip   | Phone
-----------------------------------------------------
1111 | John Doe | 123 Fake St | 12345 | 123-456-7890
-----------------------------------------------------

表2

ID   | Name     | Address     | Zip   | Phone
-----------------------------------------------------
2222 | John Doe | 123 Fake St | 12345 | 123-456-7890
-----------------------------------------------------

想要的人行横道

Table1ID | Table2ID
---------------------
1111     | 2222
---------------------

任何见解将不胜感激。 谢谢!

【问题讨论】:

  • 你熟悉JOINs吗?您可以在您希望匹配的所有字段上JOIN

标签: sql


【解决方案1】:

您可以在匹配的列上连接两个表:

SELECT Table1.ID AS Table1ID, Table2.ID AS Table2ID
FROM Table1
INNER JOIN Table2 ON Table1.Name = Table2.Name 
  AND Table1.Address = Table2.Address 
  AND Table1.Zip = Table2.Zip 
  AND Table1.Phone = Table2.Phone

我在这里加入了所有列,您必须将其调整为实际匹配的列...

【讨论】:

  • 非常有帮助,谢谢。我不知道您可以在连接中使用“和”“或”运算符。
【解决方案2】:

正如in this article and comments 解释的那样,您可以使用 JOIN 通过表别名来匹配两个表中的所有列:

SELECT t1.id Tab1Id, t2.id Tab2Id 
FROM t1 
INNER JOIN t2 on tb1.name = t2.name 
INNER JOIN t2 tb2_1 on t1.address = tb2_1.address 
INNER JOIN t2 tb2_2 on t1.zip = tb2_2.zip 
INNER JOIN t2 tb2_3 on t1.phone = tb2_3.phone

【讨论】:

  • 这是不正确的语法;请参阅 jpw 的正确语法答案。
  • 很好,@jpw 的回答比较简单明了,我要清理一些视图,tks!
猜你喜欢
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2016-11-17
  • 2015-06-03
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多