用qlc进行数据排序与筛选

2009-04-11
Erlang有一个类似SQL的数据检索机制,叫做QLC(Query Interface to Mnesia, ETS, Dets, etc),可用于对Mnesia、ETS/DETS的数据表进行数据检索,包括常见的按指定域排序(ORDER BY)、按条件筛选(WHERE...)以及限制返回的结果长度(COUNT)。看个简单的例子:
-module(test).
-export([start/0]).
-include_lib("stdlib/include/qlc.hrl").

start() ->
QH1 = qlc:q([{X, Y} || X <- [8,3,6,2], Y <- [b,a,c]]),
%以第一个值作为key进行排序
QH2 = qlc:keysort(1, QH1, [{order, ascending}]),
QC = qlc:cursor(QH2),
%获取前两条记录
qlc:next_answers(QC, 2),
%获取剩余的其他记录
qlc:next_answers(QC, all_remainning).

M-OSCAR | Powered by Blogger | Entries (RSS) | Comments (RSS) | Designed by MB Web Design | XML Coded By Cahayabiru.com