このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/445
#  MySQL 5.1での質問です。 
#   
#  A B C 
#  1 q name1 
#  2 w name2 
#  3 e name3 
#  4 q name4 
#  5 t name5 
#   
#  上記テーブルのB列の重複を除いたA,B,C列がほしい場合 
#   
#  SELECT DISTINCT B FROM table_name; 
#   
#  ではB列の重複を除くだけで他の列がとれません。他の列も併せて取得する場合はどのような解決策がありますか? 
#   
#  望んでる結果は以下のものです。 
#   
#  A B C 
#  1 q name1 
#  2 w name2 
#  3 e name3 
#  5 t name5 
#   

'B列の重複を除く際のルール'(_重複行ならび,_重複を除いた行) :-
        _重複行ならび = [_重複を除いた行|_],!.

'B列の重複を除いたA,B,C列がほしい'(_重複を除いた行) :-
        findsetof(_B列,foo(_,_B列,_),_重複を取り除いたB列ならび),
        member(_B列,_重複を取り除いたB列ならび),
        findall(_行,(
                    member([_A列,_B列,_C列],foo(_A列,_B列,_C列)),
                L1),
        'B列の重複を除く際のルール'(L1,_重複を除いた行).