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

SQL中用INNER JOIN获取交易表收发双方用户名的方法

解决交易表关联收发双方用户名的问题

核心思路是多次关联同一张表并通过别名区分,因为发送方和接收方的信息都需要通过wallet_table关联到user_table,所以需要分别对wallet_table和user_table进行两次关联,分别对应交易的收发双方。

以下是完整的SQL查询语句:

SELECT
    t.date_time,
    su.uname AS sender_uname,
    t.amount_sent,
    t.sender_updated_balance,
    ru.uname AS receiver_uname,
    t.amount_received,
    t.receiver_updated_balance
FROM
    transcation_table t
INNER JOIN wallet_table sw ON t.sender_wallet = sw.id
INNER JOIN user_table su ON sw.userid = su.id
INNER JOIN wallet_table rw ON t.receiver_wallet = rw.id
INNER JOIN user_table ru ON rw.userid = ru.id;

语句说明:

  • 给每张关联的表起别名(t代表交易表,sw代表发送方钱包,su代表发送方用户,rw代表接收方钱包,ru代表接收方用户),避免同表关联时的字段冲突
  • 第一次关联链:transcation_table → wallet_table(sw) → user_table(su),获取发送方的用户名
  • 第二次关联链:transcation_table → wallet_table(rw) → user_table(ru),获取接收方的用户名
  • 通过AS关键字将用户名字段重命名为sender_uname和receiver_uname,与需求字段对应

如果需要包含没有匹配到用户/钱包的交易(比如测试数据或异常数据),可以将INNER JOIN替换为LEFT JOIN,避免丢失记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:22