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
相关产品推荐
相关产品推荐

