適当にひとつ表示
SELECT * FROM testtable ORDER BY RAND() LIMIT 1;
ORDER BY RAND() でランダムにソートできる
グループごとに適当にひとつずつ表示
SELECT * FROM testtable GROUP BY a ORDER BY RAND();
これだと、aの中でひとつ選択してからランダムに表示することになるので毎回同じものが表示されてしまう。なので、
SELECT * FROM (SELECT * FROM testtable ORDER BY RAND()) AS tmp GROUP BY a;
まず全体を適当に並べなおしてからGROUP BYする。
動作速度はものすごく遅いけど、そんなのは知ったことではない。
いつのまにか絶版になってる! 絶版になってもそんなには困らないけど