我正在创建一个聊天系统,我的数据库看起来像
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;#39;' 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 )
但它没有归还我想要的东西
答案 0 :(得分: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
以上查询应该有效。
答案 1 :(得分:0)
这应该返回b发送或接收的最后一条消息。但我可能遗漏了你的问题,因为这与你的预期输出不符。
(SELECT `to`
, `from`
FROM databaseTable
WHERE from = 'b' OR to= 'b'
ORDER BY date desc)
LIMIT 1;