mysql - 如何根据 MySQL 中的多个列从多个表中获取唯一记录?
问题描述
我有 3 张桌子:
contacts1
id name email
1 sachin sachin@gmail.com
2 amit sachin@gmail.com
2 rahul rahul@yahoo.com
contacts2
id name email
1 neha neha@gmail.com
2 sachin sachin@gmail.com
3 mukesh mukesh@yahoo.com
contacts3
id name email
1 pooja pooja@gmail.com
2 mukeshkumar mukesh@yahoo.com
3 amit amit@gmail.com
我想从这 3 个表中获取唯一记录(EMAIL COLUMN)。我UNION
用作
SELECT `name`, `email` FROM `contacts1` WHERE `email` != ''
UNION
SELECT `name`, `email` FROM `contacts2` WHERE `email` != ''
UNION
SELECT `name`, `email` FROM `contacts3` WHERE `email` != ''
输出
结果集中的两条记录具有相同的电子邮件 ID(红十字标记)。我想排除它们,只得到它们的第一次出现。我尝试DISTINCT
了email
字段,但它给了我一个错误。我们怎么能做到这一点?
我想实现这个
解决方案
尝试使用带有 group by 的子查询,如下所示:
SELECT M.* FROM (
SELECT `name`, `email` FROM `contacts1` WHERE `email` != ''
UNION
SELECT `name`, `email` FROM `contacts2` WHERE `email` != ''
UNION
SELECT `name`, `email` FROM `contacts3` WHERE `email` != ''
) AS M
GROUP BY M.`email`
推荐阅读
- python - 重定向当前正在运行的 python 进程的标准输出
- c# - 间歇性 Azure Blob 上传失败 - 412 ConditionNotMet
- sql - SQL Server 视图性能问题
- command-line - 如何从 Minizic 输出中删除最后两行?
- javascript - 有没有办法从 cdn 导入中使用 pug.render() 函数?
- python - Keras 中的动态 RNN:使用自定义 RNN 单元在每个时间步跟踪其他输出
- python - 更改壁纸的自动脚本中的错误 - Windows 10
- c# - AutomationID 附加属性已更改
- javascript - 将字符串格式的时间戳转换为数值毫秒格式的任何其他方法?
- php - simplexml_load_file not showing all xml attributes