我有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等式检查?
答案 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