根据MySql中给定的用户从两列中选择Uniq行

根据MySql中给定的用户从两列中选择Uniq行,mysql,select,Mysql,Select,我正在创建一个聊天系统,其中我的数据库 from to msg date ---- -- ---- ----------------- a b hi 12-3-15 12:04:21 b a hi 12-3-15 12:12:21 c b hi 12-3-15 12:14:21 d b hi 12-3-15 12:14:21 a b msg1 12-3-15 12:12:21 a b ms

我正在创建一个聊天系统,其中我的数据库

from  to  msg  date
----  -- ----  -----------------
a     b   hi    12-3-15 12:04:21
b     a   hi    12-3-15 12:12:21
c     b   hi    12-3-15 12:14:21
d     b   hi    12-3-15 12:14:21
a     b   msg1  12-3-15 12:12:21
a     b   msg2  12-3-15 12:50:23
a     b   msg3  12-3-15 13:44:21
b     a   msg1  12-3-15 15:12:21
b     e   hi    12-3-15  15:32:21
b     c   hi    12-3-15 16:12:21
我正在尝试进行一个查询,返回使用“b”发送的最后一条消息或使用“b”接收的最后一条消息,并输出如下

Actor b
----
c
e
a
d
我写了一个问题

(SELECT `to`
      , `from` 
 FROM databaseTable 
 WHERE from = 'b' 
 ORDER BY date desc) 

UNION 

(SELECT `to`
      , `from` 
 FROM databaseTable 
 WHERE to = 'b'
 ORDER BY date desc )

但是它没有返回我想要的内容

这应该返回b发送或接收的最后一条消息。但我可能在你的问题中遗漏了一些东西,因为这与你的预期输出不匹配

 (SELECT `to`
          , `from` 
     FROM databaseTable 
     WHERE from = 'b' OR to= 'b'
     ORDER BY date desc) 
  LIMIT 1;
请尝试以下操作:

select distinct `to` as ActorB
from
(
    select * from
    (
        SELECT `to`,`date` 
        FROM databaseTable 
        WHERE from = 'b'
        UNION 
        SELECT  `from` , `date`
        FROM databaseTable 
        WHERE to = 'b'
    ) temp
    ORDER BY date desc
) temp

上面的查询应该可以工作。

我用相同的查询启动了解决方案,但没有找到。