MySQL联合和删除半相似行
我有一个由两个表组成的视图,一个是死亡率表,一个是临床时间表表。死亡率表中每个患者最多只包含一个条目(出于明显原因),时间线中可以包含多个条目 我遇到的问题是,有时用户会将死亡率记录在死亡率表中,有时记录在时间线表中,有时记录在两者中。我不能使用'Distinct'关键字,因为行略有不同,因为它们还包含源表名 因此,我可以得到这样的结果:MySQL联合和删除半相似行,mysql,union,Mysql,Union,我有一个由两个表组成的视图,一个是死亡率表,一个是临床时间表表。死亡率表中每个患者最多只包含一个条目(出于明显原因),时间线中可以包含多个条目 我遇到的问题是,有时用户会将死亡率记录在死亡率表中,有时记录在时间线表中,有时记录在两者中。我不能使用'Distinct'关键字,因为行略有不同,因为它们还包含源表名 因此,我可以得到这样的结果: pat_key, date, event, source 1, 2018-03-01, died, p_mortality 1, 2018-03-01, di
pat_key, date, event, source
1, 2018-03-01, died, p_mortality
1, 2018-03-01, died, p_events
1, 2018-02-01, admitted, p_events
工会是相当直截了当的——例如
select pat_key, mmdate as `date`, 'died' as event, 'p_mortality' as source from p_mortality
union distinct
select pat_key, evdate as `date`, evevent as event, 'p_timeline' as source from p_timeline
是否有任何明显的技巧可以用来消除其中一个半重复项?您可以使用聚合函数减少行数,例如:group\u concat
select pat_key, `date`, event, group_concat(source)
from
(
select pat_key, mmdate as `date`, 'died' as event, 'p_mortality' as source from p_mortality
union
select pat_key, evdate as `date`, evevent as event, 'p_timeline' as source from p_timeline
) t
group by pat_key, `date`, event