このディレクトリの索引

# 出典 :: SQL質疑応答スレ14問目 #890 # 質問させてください。MySQLです。 # 上位100件を抽出してその中から10件をランダムに抽出したい。 # SELECT文はどう書けばいいですか?1行でできますか? '上位100件を抽出してその中から10件をランダムに抽出したい。'(_10件をランダムに抽出) :- 上位100件を抽出して(_上位100件), 'その中から10件をランダムに抽出したい。'(_上位100件,_10件をランダムに抽出). '上位100件を抽出して'(_上位100件) :- findall(_値,テーブル(_値),_値ならび), 上位100件(_値ならび,_上位100件). 上位100件(_値ならび,_上位100件) :- length(_上位100件,100), 降順整列して先頭から100件(_値ならび,_上位100件). 降順整列して先頭から100件(_値ならび,_上位100件) :- 降順整列(_値ならび,_降順整列した値ならび), append(_上位100件,_,_降順整列した値ならび). 'その中から10件をランダムに抽出したい。'(_上位100件,_10件をランダムに抽出) :- findnsols(10,'ランダムに抽出したい。'(_上位100件,_10件をランダムに抽出),!. 'ランダムに抽出したい。'(_値ならび,_選択値) :- random_select(_選択値_1,_値ならび,_残りならび), 'ランダムに抽出したい。'(_選択値_1,_残りならび,_選択値). 'ランダムに抽出したい。'(_選択値,_,_選択値). 'ランダムに抽出したい。'(_,_残りならび,_選択値) :- 'ランダムに抽出したい。'(_残りならび,_選択値). 降順整列(L1,L2) :- 降順整列(L1,L2,[]). 降順整列([],L,L). 降順整列([A|R],L,L3) :- 降順分割(A,R,L1,L2), 降順整列(L1,L,[A|L4]), 降順整列(L2,L4,L3). 降順分割(_,[],[],[]). 降順分割(A,[B|R],[B|L1],L2) :- B @> A, 降順分割(A,R,L1,L2). 降順分割(A,[B|R],L1,[B|L2]) :- B @=< A, 降順分割(A,R,L1,L2).