4

SQL Server 2008 の bigint のリストからランダムに 1 つの数字を選択する必要があります。数字のリストは続きません

例:番号リストは次のようになります

1578 1579 1580 1587 1589 1590 1595 1603

前もって感謝します。

4

3 に答える 3

4

newid() による select の上位 1 つの結果の順序付けに成功しました。

select top 1 WhateverId from YourTable order by newid();
于 2012-10-14T05:17:43.257 に答える
2

大きなテーブルから行をランダムに選択する

SELECT TOP 1 BigIntColumn FROM Table1
ORDER BY NEWID()
于 2012-10-14T05:18:40.307 に答える
0

他の回答は、大きなテーブルにうまく対応できません。

これはあり、SQL2005 以降で使用できます。

SELECT TOP 1 * FROM <table_name> TABLESAMPLE (10 PERCENT)

Selecting Rows Randomly from a Large Table の「さらに下」から:

ディスカッション グループでランダムな行を選択する方法について質問されると、NEWID クエリが提案されることがよくあります。シンプルで、小さなテーブルに非常に適しています。ただし、NEWID クエリを大きなテーブルに使用する場合、大きな欠点があります。ORDER BY 句により、テーブル内のすべての行が tempdb データベースにコピーされ、そこで並べ替えられます。これにより、次の 2 つの問題が発生します。

通常、ソート操作には高いコストが伴います。並べ替えは大量のディスク I/O を使用する可能性があり、長時間実行される可能性があります。最悪のシナリオでは、tempdb の領域が不足する可能性があります。最良のシナリオでは、tempdb が大量のディスク領域を占有する可能性があり、手動の圧縮コマンドを使用しないと再利用できません。必要なのは、tempdb を使用せず、テーブルが大きくなっても遅くならない行をランダムに選択する方法です。

于 2012-10-14T05:25:06.687 に答える