世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2006年12月22日

MS SQLServerで結果セットのシャッフル

SQLServerのrand()は同一のクエリ内においては常に一定の値を返すのね。

だから、order byにランダムな値を与えてシャッフルしようと思ったら、一工夫必要。Black Rainさんという方が書いてらっしゃるのを見つけた。 こんなの

結果セットの行ごとに異なる値で、かつ時間に依存して毎度変化する値がほしいわけだから、行のidか何か(行依存成分)+RANDの値(時間依存成分)を使う。ただし、このままだと行のidに対して単調増加で意味がないから、それでタンジェントに掛けてから変動の激しい下位桁を使ってる。なるほど。

さしあたってはこれでいいかな。

トラックバック

http://yugui.jp/articles/570/ping
SQL Server で結果セットをシャッフルしようと思ってRAND関数つかったら (Do I like programming?)
他のデータベースと同じように、 SELECT * FROM table1 ORDER BY RAND() こんな感じでいいとおもったけど ぜんぜん順番変わらない—\(^o^)/ †...

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system