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