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

交易表双外键关联用户主表,如何查询关联用户名与金额?

解决方法:两次关联用户主表获取双方用户名

别担心,这个问题的核心是需要两次关联用户主表,因为交易表里的fromUser和toUser都指向用户主表的userid,我们只需要给用户主表取不同的别名来区分转出方和转入方就行。

基础查询语句(只显示存在的用户交易)

这是最常用的写法,只会返回交易双方都在用户主表中有记录的交易:

SELECT 
    um_from.username AS fromUsername,
    um_to.username AS toUsername,
    ut.amount
FROM user_transactions ut
INNER JOIN user_master um_from ON ut.fromUser = um_from.userid
INNER JOIN user_master um_to ON ut.toUser = um_to.userid;

代码解释:

  • 给用户主表起两个别名:um_from代表转出用户的信息,um_to代表转入用户的信息
  • 第一次INNER JOIN把交易表的fromUser和um_from的userid关联,拿到转出用户名
  • 第二次INNER JOIN把交易表的toUser和um_to的userid关联,拿到转入用户名
  • 最后选择我们需要的三个字段,并用AS给字段起别名,完全匹配你要的输出格式

可选:包含用户已删除的交易记录

如果有些交易的转出或转入用户已经不在用户主表中了,你还想保留这些交易记录,可以把INNER JOIN换成LEFT JOIN,这样对应的用户名会显示为NULL:

SELECT 
    um_from.username AS fromUsername,
    um_to.username AS toUsername,
    ut.amount
FROM user_transactions ut
LEFT JOIN user_master um_from ON ut.fromUser = um_from.userid
LEFT JOIN user_master um_to ON ut.toUser = um_to.userid;

内容的提问来源于stack exchange,提问作者Sadiqabbas Hirani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:44:03