在erlang中按id排序表的记录

时间:2013-02-21 09:40:57

标签: erlang

我有这个桌子的人

-record(person, {id, firstname, lastname, phone}).

它包含以下值:

12  alen     dumas        97888888
15  franco   mocci      55522225
13  ali      othmani    44444449

我想按ID 订购此表 它应该是这样的:

 12  alen     dumas        97888888
  13  ali      othmani    44444449
  15  franco   mocci      55522225

1 个答案:

答案 0 :(得分:1)

要订购存储在mnesia中的元组,您需要:

  • 阅读所有记录并在mnesia
  • 之外对其进行排序

e.g:

Select = [{#person{_ = '_'}, [], ['$_']}],
Sorted = lists:sort(mnesia:dirty_select(person, Select)),
erlang:hd(lists:reverse(Sorted)).

这将得到所有记录,将它们排序为元组(考虑到id是记录中的第一个元素,如果不使用lists:sort/2并指定排序函数,则应该足够),然后反转列表并返回第一个元素(在Erlang中,它更快地反转并获取第一个元素而不是返回列表的最后一个元素)。