MySQL查询从对话列表中获取用户列表

Sal*_*lim 0 php mysql sql

我有一个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查询?请帮我.

Joh*_*Woo 5

您可以选择所有的记录,你要搜索一个特定的用户在任何一个senderreceiver.在该测试之后,如果发送者的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)