MySQL如何关联查询Couples配对双方的指定字段
双表关联提取配对双方信息的SQL实现
实现思路
分别对Couples表的两个Partner字段,独立关联B表获取对应信息,通过表别名区分两次关联的来源,使用左关联保证Couples表的所有配对数据都被完整保留。
实现SQL
SELECT c.ID, -- 提取Partner1关联的B表字段 b1.name, b1.date, b1.Letter, b1.Phonenumber, -- 提取Partner2关联的B表字段 b2.name, b2.Letter, b2.date FROM Couples c -- 关联Partner1对应的B表记录 LEFT JOIN B b1 ON c.`Partner 1` = b1.ID -- 关联Partner2对应的B表记录 LEFT JOIN B b2 ON c.`Partner 2` = b2.ID;
关键说明
- 两次关联同一张B表时,必须设置不同的表别名(示例中为
b1、b2),否则会触发表名重复的语法错误 - 采用
LEFT JOIN而非INNER JOIN,是为了避免某一方在B表无匹配记录时,对应的配对行被过滤,保障全量覆盖Couples表的配对数据 - 针对结果集中的重名字段(两个
name、两个date、两个Letter),可以在SELECT语句中添加自定义别名做区分,例如将Partner2的字段标注为b2.name AS partner2_name,提升结果可读性
内容的提问来源于stack exchange,提问作者usoppu
相关产品推荐
相关产品推荐

