根据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
上面的查询应该可以工作。我用相同的查询启动了解决方案,但没有找到。