【发布时间】:2015-09-18 02:32:25
【问题描述】:
我有两个表,已经填充了如下数据:
table1 数据是公民数据,具有字段:
uniqid (a uniqueIP for person, like social sec num)
first_name
last_name
birthdate
address
table2 带字段:
first_name
last_name
birthdate
address
gender
healthinsurance_type
...
table1 数据和table2 数据来自不同的独立机构。这些表中的名称可以以不同的方式键入,等等。
table1 是名称和 ID 的权威。 table2 是我需要处理的,但没有 ID (citizenID)。
现在我需要table2 中的每一行来获取与table1 关联的citizenid,这样最后我会得到带有附加ID 列的table2,与每个人正确关联。
类似于在table1 中搜索某些条件匹配的人(table2 中的一行),如果table1 中存在记录,则将该记录的ID 放入table2 中的列中。
但要快速完成所有行。
table1 的行数约为 200 万。
table2 的行数约为 900.000
【问题讨论】:
-
一台计算机可以非常有效地解决这个问题。基本上你不能加入那些表。也许您可以创建第三个表将两者链接在一起,或者将一个表中的列添加到另一个表中。
-
您忘记提供数据类型和约束。使用
\d tbl提供您从 psql 获得的(相关部分)。而且,总是,你的 Postgres 版本。另外,两边可以重复吗? -
vresion 9.1 表 1:uniqid:整数(11 位),pk 名称:char,不为空,不为空 生日:日期,不为空 table1 数据来自民事登记处。这是参考。没有重复。表 2 数据是建议的医疗保健接受者的列表,由现场官员手动收集(不幸的是,减去公民 ID),然后应提交给每个人的公民 ID 的部门。所以我需要在 table2 中的每个人上加上正确的公民 ID,使用 table1 作为参考
-
请编辑这个问题。这种信息在 cmets 中很难读取。
标签: sql postgresql pattern-matching similarity