Postgres输出2个表之间的dup行的id

时间:2014-03-06 21:35:35

标签: json postgresql duplicates

我有2张桌子。主表和master_staging表。我想知道master_staging表中的哪些行也出现在主表中。 bellow是master_staging的结构

--------------+------------------------+-------
 id           | integer                |
 firstname    | character varying(255) |
 lastname     | character varying(255) |
 email        | text                   |
 address      | character varying(255) |
 country      | character varying(255) |
 phones       | json                   |
 twitters     | json                   |
 linkedin     | character varying(255) |
 urls         | json                   |
 source       | character varying(255) |
 notes        | json                   |
 conflict_id  | integer                | **************************
 businessname | character varying(255) |
 warnings     | json                   | **************************
 has_warning  | boolean                | **************************
 deleted      | boolean                | **************************

主表的结构完全相同,只是它不包含上表第三列中带'**************************'的列。

一种解决方案是遍历master_staging表中的所有行,并在master表中查询具有相同firstname,lastname和email的行,并从那里“手动”检查所有其他字段是否相同。

我希望有一个更优雅的解决方案,它允许我创建一个运行一个sql语句,它返回master_staging中所有行的ID,这些行在master中有重复项。困扰我的主要问题是我不确定如何进行深度json等式检查?

1 个答案:

答案 0 :(得分:1)

您可以在任何字段上加入两个表,使记录唯一。例如,

Select M.id
From master M, master_staging MS
Where M.email= MS.email
and M.firstName = MS.firstName
and M.lastName = MS.lastName