两个表table_a和table_b都必须使用employee_id列进行比较,该列存在于两个表中。 两个表都有 MILLIONS 行。 必须显示3个结果 -
由于两个表中有数百万行,因此该过程必须快速,以便可以快速比较两个表。 我正在使用MySQL服务器来编写查询。
答案 0 :(得分:0)
这很棘手,但这里有一个例子,假设employee_id
在每个表中都是唯一的:
select employee_id,
(case when max(which) = 'a' then 'A-only'
when min(which) = 'b' then 'B-only'
else 'both'
end) as which,
concat_ws(',',
(case when count(*) = 2 and not min(col1) <=> max(col1) then 'col1' end),
(case when count(*) = 2 and not min(col2) <=> max(col2) then 'col2' end)
) as differences
from ((select 'a' as which, employee_id, col1, col2
from a
) union all
(select 'b' as which, employee_id, col1, col2
from b
)
) ab
group by employee_id;
请注意,这会使用NULL
- 安全比较运算符。