gpt4 book ai didi

mysql - SQL查询从内部连接返回多个数据

转载 作者:行者123 更新时间:2023-11-30 21:52:22 24 4
gpt4 key购买 nike

我有两张数据库表,一张是注册用户表,一张是聊天消息表。 我想列出在聊天消息表中有转换的用户。下面的 sql 查询执行了它,但它显示了 列表中的事件用户名,而不是派对用户。

## 表 users_account

reg_userid | Name
--------------------------
1 | Peter
2 | John

表 chatroom_message

userid_a | userid_b
--------------------------
1 | 2
3 | 1

SQL

SELECT * FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_a = ua.reg_userid
WHERE cm.userid_a = :chat_client
UNION ALL
SELECT * FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_b = ua.reg_userid
WHERE cm.userid_b = :chat_client

当前 session 用户 ID = 1 (Peter),所以当我在上面运行 sql 查询时,它返回下面的表

结果

reg_userid | Name
--------------------------
1 | Peter

我的问题是如何运行 sql 查询来检查活跃用户是否在聊天消息 userid_a OR userid_b
如果找到结果,让它返回聊天方的名字 John,作为他的联系人聊天列表,同样转到 John当他登录时,结果也会显示他 Peter 现在不是他自己的

我希望我的结果是 John 登录到他的帐户,Peter 的名字将显示为他的聊天伙伴。

reg_userid | Name
--------------------------
1 | Peter

我希望我的结果是 Peter 登录到他的帐户,John 的名字将显示为他的聊天伙伴。

reg_userid | Name
--------------------------
2 | John

最佳答案

我猜你快到了。这可能是您正在寻找的:

SELECT ua.reg_userid, ua.name FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_b = ua.reg_userid
WHERE cm.userid_a = :chat_client
UNION ALL
SELECT ua.reg_userid, ua.name FROM chatroom_message cm
INNER JOIN users_account ua ON cm.userid_a = ua.reg_userid
WHERE cm.userid_b = :chat_client

关于mysql - SQL查询从内部连接返回多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46696238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com