このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/483
#  全校学生健康診断表で 
#  身長の高い人50人を選ぶ場合 
#  select 学生ID, 学生名, 学生身長 from 健康診断表 order by 学生身長 desc limit 50 
#  とかでいいと思いますが 
#  その次の50人を選ぶ場合はどうしたらいいのでしょうか? 
# 
# 

身長の高い人50人づつ選ぶ場合 :-
        findall([_学生身長,_学生ID,_学生名],(
                    健康診断表(_学生ID,_学生名,_学生身長)),
                LL1),
        sort(LL1,LL2),
        reverse(LL2,LL3),
        身長の高い人50人を選ぶ(LL3).

身長の高い人50人を選ぶ(LL) :-
        length(LL0,50),
        append(LL0,LL2,LL),
        append(_,[[_学生身長,_学生ID,_学生名]|R],LL0),
        writef('%t,%t,%t\n',[_学生ID,_学生名,_学生身長]),
        R = [].
身長の高い人50人を選ぶ(LL) :-
        length(LL0,50),
        append(LL0,LL2,LL),
        身長の高い人50人を選ぶ(LL2).
身長の高い人50人を選ぶ(LL) :-
        append(_,[[_学生身長,_学生ID,_学生名]|R],LL),
        writef('%t,%t,%t\n',[_学生ID,_学生名,_学生身長]),
        R = [].
身長の高い人50人を選ぶ([]).