我需要选择两个用户之间发送的最后一条消息......
现在使用这种原始方法我选择了两个用户之间的所有消息,但这是一个漫长的过程
Guard = [{'=:=','$1',OID}],
Match = #pms{
from = '$1',
to = '$2',
body = '$3',
_ = '_'
},
Result = ['$$'],
{ok, Result} = mnesia:transaction(fun()->mnesia:select(pms,[{Match, Guard, [Result]}]) end),
查看记录
-record(pms,{
message_id,from,to,body,time,seen=0}).
所以我有两个变量,from
和to
我需要的是选择每个会话的最后一条消息,即将用户的ID插入from
或{{1} }
答案 0 :(得分:1)
请考虑使用qlc
我在下面写了一些代码可能符合你的要求。
F = fun() ->
Q = qlc:q([E || E <- mnesia:table(pms),E#pms.from == "a",E#pms.to == "b"]),
Q2 = qlc:keysort(2, Q, [{order, descending}]),
Qc = qlc:cursor(Q2),
qlc:next_answers(Qc, 1)
end,
mnesia:transaction(F).