Mysql 为表中的不同值生成报告的查询

Mysql 为表中的不同值生成报告的查询,mysql,Mysql,我希望生成一个报告,在该报告中,我需要根据源列比较mysql表中的记录,当记录除了源列之外还有不同的值时,显示不同的记录和状态 例如,给定下表: 我们将获得以下输出: 显示Joe是因为不同来源的记录给出了不同的配偶。Bob和Mark没有显示,因为两个来源都有相同的数据。显示Ernest是因为只有一个来源有他的信息 查找一个源中存在但另一个源中不存在的记录似乎相当简单,例如: SELECT 'New' as `Status`, f.* FROM (select * from tbl where

我希望生成一个报告,在该报告中,我需要根据源列比较mysql表中的记录,当记录除了源列之外还有不同的值时,显示不同的记录和状态

例如,给定下表:

我们将获得以下输出:

显示Joe是因为不同来源的记录给出了不同的配偶。Bob和Mark没有显示,因为两个来源都有相同的数据。显示Ernest是因为只有一个来源有他的信息

查找一个源中存在但另一个源中不存在的记录似乎相当简单,例如:

SELECT 'New' as `Status`, f.* FROM (select * from tbl where tbl.Source='facebook') where `Name` not in (SELECT `Name` FROM select * from tbl where tbl.Source='linkedin')
但我对如何找到不同的记录有点迷茫


谢谢。

在不同来源上识别具有不同工作或配偶价值观的姓名。使用UNION ALL将它们与仅发布在一个源中的新名称组合

select 
'Different' status,
 t1.name,
 t1.job,
 t1.spouse,
 t1.source
FROM 
 tbl t1 
WHERE 
 EXISTS (SELECT 1 FROM tbl t2 WHERE t2.name = t1.name AND t2.source <> t1.source AND 
                         (t2.job <> t1.job OR t2.spouse <> t1.spouse ))
UNION ALL 
SELECT 
'New',
 name,
 job,
 spouse,
 source
FROM tbl t1
WHERE NOT EXISTS (SELECT 1 FROM tbl t2 WHERE t2.name = t1.name
                  AND t2.source <> t1.source );

谢谢,这就是我要找的!