このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/666
#  id id2 hoge 
#  1 1 a 
#  2 1 b 
#  3 1 c 
#  4 1 d 
#  5 2 a 
#  6 2 b 
#   
#  こんなテーブルにselect * from test group by id2とやると 
#  4 1 d 
#  6 2 b 
#   
#  が出ますが最初に登録した 
#  1 1 a 
#  5 2 b 
#   
#  と出したいのですがどうしたらいいでしょうか? 
# 
# 

test(1,1,a).
test(2,1,b).
test(3,1,c).
test(4,1,d).
test(5,2,a).
test(6,2,b).


'testテーブル上の、id2をキーにグループ参照をしてキー値を持つ最初の組のみを取り出す'(_id1,_id2,_hoge) :-
'testテーブル上の、id2をキーにグループ参照をして'(_キーならび),
'testテーブル上の、キー値を持つ最初の組のみを取り出す'(_キーならび,_id1,_id2,_hoge).

'testテーブル上の、id2をキーにグループ参照をして'(_キーならび) :-
setof(_id2,[_id1,_id2,_hoge] ^ test(_id1,_id2,_hoge),_キーならび).

'testテーブル上の、キー値を持つ最初の組のみを取り出す'([_キー|R],_id1,_id2,_hoge) :-
'testテーブル上の、最初の組のみを取り出す'(_キー,_id1,_id2,_hoge).
'testテーブル上の、キー値を持つ最初の組のみを取り出す'([_|R],_id1,_id2,_hoge) :-
'testテーブル上の、キー値を持つ最初の組のみを取り出す'(R,_id1,_id2,_hoge).

'testテーブル上の、最初の組のみを取り出す'(_id2,_id1,_id2,_hoge) :-
once(test(_id1,_id2,_hoge)).