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

标签 mysql

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

例如,给出下表: Raw values

我们将得到以下输出:

Report values

显示乔是因为不同来源的记录给出了不同的配偶。鲍勃和马克没有显示,因为两个来源都为他提供了相同的数据。显示欧内斯特是因为只有一个来源拥有他的信息。

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

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')

但是我对如何查找不同的记录有点迷失。

谢谢。

最佳答案

识别在不同来源上具有不同工作或配偶值(value)观的姓名。使用 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 );

关于mysql - 查询为表中的不同值生成报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49867242/

相关文章:

mysql - 如何选择年龄范围内的人

mysql - Laravel 5.4 迁移 key 太长错误

php - "use"命令因 PostgreSQL 中的语法错误而失败(从 MySQL 转换)

php - 查询未发送到数据库

php - 循环遍历数组时打印数组时出错

java - 线程中的异常 "main"org.hibernate.AnnotationException : @OneToOne or @ManyToOne on

python - 没有要应用的迁移,但 Django 仍在尝试创建新的内容类型

php - 动态模板表?

mysql - 当我在 ruby​​ on Rails 中加入多个表时,出现错误 : "uninitialized constant OfferLetter::Users"

mysql - CakePHP 迁移插件工作流程