You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中一个表字段对应另一表两个值的两表关联查询实现方法

MySQL多表关联查询通话双方姓名解决方案

错误原因分析

你编写的SQL存在两处问题:

  • 表名不匹配:人员信息表实际名为people,你写的person会直接抛出表不存在的报错
  • 关联逻辑错误:单次关联people表时,关联条件要求同一个people.Number同时等于某条通话记录的主叫、被叫号码,不存在符合该条件的数据,因此即使表名修正也查不到结果

正确实现方案

需要对people表做两次别名关联,分别匹配主叫号码和被叫号码,查询语句如下:

SELECT 
  c_p.Person AS 主叫姓名,
  r_p.Person AS 被叫姓名
FROM phone_calls pc
-- 第一次关联people表匹配主叫信息
INNER JOIN people c_p ON pc.Caller = c_p.Number
-- 第二次关联people表匹配被叫信息
INNER JOIN people r_p ON pc.Receiver = r_p.Number;

如果需要保留没有匹配到姓名的通话记录,可以将INNER JOIN替换为LEFT JOIN,无匹配的姓名位会返回NULL

查询结果

执行上述语句后会得到你预期的输出:

主叫姓名被叫姓名
JackGill
JaneBob

内容的提问来源于stack exchange,提问作者Mr T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:48:03