このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/753
#  ../test/read.cgi/db/1274791771/4のような状況で、 
#  よくある質問1 
#   
#  (問) 
#  ID | DATE     | DATA 
#  --+----------+----- 
#  1 | 2007-11-11 | aaa 
#  2 | 2007-11-11 | bbb 
#  1 | 2007-11-10 | ccc 
#  3 | 2007-11-12 | ddd 
#  3 | 2007-11-11 | eee 
#  4 | 2007-11-10 | fff 
#  1 | 2007-11-12 | ggg 
#   
#   
#  各IDごとにランダムで2件抽出して、そのDATEを 
#  現在の日時に更新するにはどうすればよいでしょうか? 
#   

各IDごとにランダムで2件抽出して、そのDATEを現在の日時に更新する :-
        findsetof(_ID,'TableName'(_ID,_DATE,_DATA),_IDならび),
        append(_,[_ID|R],_IDならび),
        findall([_ID,_DATE,_DATA],(
                    'TableName'(_ID,_DATE,_DATA)),
                L1),
        length(L1,_要素数),
        ランダムに2件抽出して(_要素数,L1,L2),
        現在の日時に更新する(L2),
        R = [].

ランダムに2件抽出して(0,[],[]) :- !.
ランダムに2件抽出して(1,LL,LL) :- !.
ランダムに2件抽出して(_要素数,L1,[_1,_2]) :-
        Nth1 is (random mod _要素数) + 1,
        list_nth(Nth1,L1,_1),
        repeat,
        Nth2 is (random mod _要素数) + 1,
        \+(Nth1 = Nth2),
        list_nth(Nth2,L1,_2),!.

現在の日時に更新する([[_ID,_DATE,_DATA]|R1]) :-
        現在の日時(_現在の日時),
        findall([_ID,_DATE2,_DATA2],
                    retract('TableName'(_ID,_DATE2,_DATA2)),
                L1),
        現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],L1).

現在の日時に更新する(_現在の日時,[],[]) :- !.
現在の日時に更新する(_現在の日時,[],L) :-
        append(_,[[_ID,_DATE,_DATA]|R],L),
        assertz('TableName'(_ID,_DATE,_DATA)),
        R = [],!.
現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],[[_ID,_DATE,_DATA]|R2]) :-
        assertz('TableName'(_ID,_現在の日時,_DATA)),
        現在の日時に更新する(_現在の日時,R1,R2),!.
現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],[[_ID,_DATE2,_DATA1]|R2]) :-
        assertz('TableName'(_ID,_DATE2,_DATA2)),
        現在の日時に更新する(_現在の日時,[[_ID,_DATE,_DATA]|R1],R2),!.