2011年10月25日火曜日

SQL Anywhere ランダムな結果を取得

SQL Anywhereで複数の行からランダムに1件選びたい場合はtop句とrand関数を使う。

たとえばテーブルmytableのランダムな1行を返す場合は次のようなselect文を書けばいい。

SELECT TOP 1 * FROM mytable
ORDER BY RAND()


rand関数はSQL2003 Vendor extension。他のDBでは使えるものとダメなものがある。

MySQLとSQLServerはrand関数だが、PostgreSQL はrandom関数。
Oracleはまた違うようである。(dbms_random.random関数?)
SQL Anywhere以外は未検証です。

1 件のコメント:

  1. ある程度ランダムだが特定の行が出やすいように感じる。気のせい?

    返信削除