2017-05-12 20 views
4

私たちは、少なくともOracleとMSSQLの複数のデータベースを使用しています。なぜ我々は両方を使用する必要がありますか分からないが、この質問はMSSQLについてです。ランダム選択select

テーブルがあります。フィールドaccountIDを持つSystem..DirectMappingを呼び出してみましょう。私は彼らがすべて数字であることを保証することはできませんが、そうであるように見えます。

本当に私の質問は2つの関連する部分にあります。

まず、有効なアカウントIDを見つけなければなりません。それはテーブルにあるものです。これはまっすぐですが、私はランダムなものを取得したいと思います。

だから私は動作しますが、彼らは同じ順序で常に

select distinct accountID from System..DirectMapping 

をしました。私は(あなたがNEWIDを使用して何かをランダム化する可能性がどのように読んで)私は

select distinct accountID from System..DirectMapping order by newid() 

を試みたが、それは明確なを選択する際に、フィールドによって順序がここに意味をなさないかを選択して行わなければならないことを私にエラーを与えました。だから私は試しました

select accountID from 
(select distinct accountID from System..DirectMapping) j 
order by newid() 

しかし、それは私にビューで注文することができないことについて同様のエラーをもたらした。私は最終的にすべてをJava配列に読み込み、Collections.shuffle()を実行しましたが、結果の数を制限することができるため、クエリーから実行する方が良いでしょう(私はトップ10のように思えます)。だから、それを行う方法はありますか?

後で2番目の質問を保存します。

答えて

3

あなたがTOPの仕様を使用する場合は、ビュー内のORDER BYの操作を行うことができます。

select TOP 100 PERCENT accountID from 
(select distinct accountID from System..DirectMapping) j 
order by newid() 
+0

マイナーな提案:オブジェクトが '1'の代わりにどのようにトップ 'について単一のランダム' accountID'を、選択することがあるので、 「トップ100%」の? –