MySQL查询求助:两张表关联如何同时返回匹配和非匹配的所有行
实现全量返回两张表关联数据的MySQL查询方案
你当前使用的INNER JOIN为内连接,仅返回两张表Mobile字段匹配的行,若要保留两张表所有行、无匹配字段填充NULL,属于全外连接的需求。MySQL原生不支持标准SQL的FULL OUTER JOIN语法,可通过左连接与右连接结果去重合并的方式实现,最终查询语句如下:
SELECT f.Mobile, f.Name, f.address, s.city FROM firsts f LEFT JOIN second s ON f.Mobile = s.Mobile UNION SELECT s.Mobile, s.Name, f.address, s.city FROM firsts f RIGHT JOIN second s ON f.Mobile = s.Mobile
逻辑说明
- 第一段
LEFT JOIN完整保留firsts表全部数据,匹配成功返回对应的s.city值,未匹配则s.city填充NULL - 第二段
RIGHT JOIN完整保留second表全部数据,UNION操作会自动剔除两段查询中重复的匹配行,最终得到两张表的全量关联结果
内容的提问来源于stack exchange,提问作者Jahanzaib Khan
相关产品推荐
相关产品推荐

