mysql - 具有共同值的记录的映射 View

标签 mysql sql

我有一个带有注册的 MySQL 表,如下所示:

id  name  email            phone   
1   Jim   jim@gmail.com    111  
2   Jim   jim@hotmail.com  111  
3   Fred  fred@gmail.com   222   
4   Fred  fred@gmail.com   222
5   Adam  adam@gmail.com   333

现在我需要找到所有不同的人已经注册并且可以通过电子邮件或电话值来完成。我想要一个用于映射的表/ View 。根据上面的示例表,我怎样才能得到如下所示的类似结果?

person_id  registration_id   
1          1  
1          2
2          3
2          4
3          5

请注意,id 值不需要完全一样。我可以重新使用注册表中的值或以不同方式生成 ID。

最佳答案

可以通过一个简单的查询来实现:

select min(a.id) as person_id,b.id as registration_id 
from
registrations a
join registrations b on ((a.email=b.email or a.phone=b.phone) and a.id<=b.id)
group by b.id

请在 http://sqlfiddle.com/#!9/d61bd/11 验证结果

关于mysql - 具有共同值的记录的映射 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812752/

相关文章:

php - 使用 HTML2PDF 和 MySQL 创建 PDF

mysql - SQL Select Data 具有多行条件

mysql - SQL查询询问问题

php - 正在执行的 MySql 事务的一部分没有 "commit"

mysql - 在连接查询中多次引用同一个表中的记录?

mysql - 删除在其他表中没有引用的行;

sql - 如何根据其他列(同一行)中的值更新表所有行中的列?

php - 如何查看我的 IP 地址?

javascript - 如何使用 Sequelize.js 将数据插入桥接/映射表

iphone - 格式化存储在 SQLite3 中的文本数据