输出mysql distinct查询只输出我想要的信息

时间:2016-08-10 18:57:08

标签: php mysql

我想创建一个聊天/下午系统,我想要一个特定的查询有点麻烦

我有一个名为messages的表,其中包含以下字段

ID,From_user_id,To_user_id,内容

进入收件箱时,我希望向所有与我对应的用户展示但却是唯一的。例如,我的数据库中有以下内容

ID, From_user_id, To_user_id, Content
1,  1,            2,          hi
2,  1,            2,          hello
3,  2,            1,          hi
4,  1,            3,          hi
5,  3,            1,          hi

在user1的收件箱中,我想回显user_id 2和user_id 3 在user2的收件箱中,我想回显user_id 1 在user3的收件箱中我想回显user_id 1

我尝试了以下代码

$qinbox = "SELECT DISTINCT from_users_id, to_users_id from messages
WHERE from_users_id = $id OR to_users_id = $id";

$queryinbox = $db->query($qinbox);

while ($inbox = $queryinbox->fetch(PDO::FETCH_ASSOC)) {
            echo $inbox['from_users_id']; 
            echo $inbox['to_users_id']; echo ' <p>' ; }

然后user1获得以下行

ID, From_user_id, To_user_id 
1,  1,            2              
3,  2,            1          
4,  1,            3          
5,  3,            1          

虽然我希望结果是唯一的。它是谁并不重要。所以从无到有。

喜欢facebook或linkedin聊天。所以,如果我在这个实例中是user1,我想看到user2和user3只有一次。

2 个答案:

答案 0 :(得分:1)

这样的事情我应该这样做

SELECT DISTINCT a.user_id
FROM (SELECT from_users_id as user_id 
      FROM messages WHERE to_users_id = $id 
      UNION SELECT to_users_id 
      FROM messages WHERE from_users_id = $id) as a

答案 1 :(得分:1)

没有 UNION ,所以更快

SELECT DISTINCT IF(from_users_id = $id, to_users_id, from_users_id) as user_id
FROM messages
WHERE from_users_id = $id OR to_users_id = $id;