我有一个mysql表聊天就好
+---------+-----------+-------------+----------------+
| chat_id | sender_id | receiver_id | msg |
+---------+-----------+-------------+----------------+
| 1 | 1002 | 1001 | test |
| 2 | 1001 | 1002 | test |
| 3 | 1002 | 1001 | test |
| 5 | 1001 | 1002 | asdf |
| 6 | 1003 | 1001 | tesdf |
| 9 | 1001 | 1003 | tasdfa a fasd |
| 10 | 1001 | 1004 | dsf asdf a |
| 11 | 1005 | 1001 | dsf asdf asdf |
+---------+-----------+-------------+----------------+
Run Code Online (Sandbox Code Playgroud)
在用户1002,1003,1004,1005中存在用户1001的会话
我需要用户1001进行对话的用户列表(1002,1003,1004,1005).
什么是mysql查询?请帮我.
您可以选择所有的记录,你要搜索一个特定的用户在任何一个sender或receiver.在该测试之后,如果发送者的id等于您要搜索的用户ID,如果它是相等的,则返回接收者的id,否则返回发送者.该DISTINCT关键字提供给显示结果列表中只有唯一的ID.
SELECT DISTINCT
CASE WHEN sender_id = 1001
THEN receiver_id
ELSE sender_id
END userID
FROM tableName
WHERE 1001 IN (sender_id, receiver_id)
Run Code Online (Sandbox Code Playgroud)
因为你想根据你的评论连接行
SELECT GROUP_CONCAT(DISTINCT
CASE WHEN sender_id = 1001
THEN receiver_id
ELSE sender_id
END) userID
FROM tableName
WHERE 1001 IN (sender_id, receiver_id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |