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

MySQL查询中如何同时获取消息发送方与接收方用户名?

MySQL查询同时获取消息发送方和接收方用户名

你的问题出在两次关联Users表时没给表设置别名,数据库无法区分你要获取哪个关联表的用户信息,同时查询里的部分字段名和实际表结构不匹配,导致无法正确获取数据。

根据你提供的表结构,修改后的查询语句如下:

SELECT
    m.MessageID AS msg_id,
    sender.UserName AS 发送方用户名,
    receiver.UserName AS 接收方用户名
FROM Messages m
INNER JOIN Users sender ON m.Sent_By = sender.UserID
INNER JOIN Users receiver ON m.Received_By = receiver.UserID;

说明:

  • 给Users表分别设置sender(发送方)和receiver(接收方)两个别名,避免同表多次关联时的字段冲突
  • 用别名对应关联Messages表的Sent_By和Received_By字段,分别匹配Users表的UserID
  • 如果Messages表有消息内容字段message,可以直接在SELECT后加上m.message补充显示

如果需要保留你原查询里的字段(注意修正字段名),可以用这个版本:

SELECT
    m.MessageID AS msg_id,
    sender.UserName AS sender_name,
    m.message,
    m.Received_By AS received_by_userid,
    m.Sent_By AS sent_by_userid,
    receiver.UserName AS receiver_name
FROM Messages m
INNER JOIN Users sender ON m.Sent_By = sender.UserID
INNER JOIN Users receiver ON m.Received_By = receiver.UserID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:45:05