0

時間に基づいてランダムにデータベースからレコードを選択したい。

例 私は数千のレコードを持つ Table1 という名前のテーブルを持っています。今では毎時約 100 の質問を毎時表示したいのですが、毎時間ランダムにする必要があります。どのようにそれを達成することができます。

100 の列とマスター テーブルのレコード ID を格納する別のテーブルを作成したくありません。代わりに、日付と時刻を渡し、その時間に 100 の質問を取得できるロジックを使用したいと考えています。

私はsqlserver 2005を使用しています。

誰かがこの問題を解決するのを手伝ってくれるなら、私はとても感謝しています。

次の方法で、id、datetime、string rowno を使用して新しいテーブルを作成し、ID をコンマで区切って保存できますか?

これには何か問題があると思いますか??

4

5 に答える 5

0

これを行う簡単な方法を次に示します。質問を保持するテーブルの ID 列がまだない場合は、追加してください。

select top 100 *
from Questions Q
where Q.QuestionID % 24 = DATEPART(hour, (CONVERT(datetime, GETDATE())))
order by NEWID()

これにより、各質問に整数 ID が割り当てられます。アイデアは、現在の時間に基づいてモジュラスを使用することです。したがって、午前 1 時 30 分の場合、日付部分は 1 を返すため、(1,25,49,…) のような ID を持つすべての質問が返されます。最後に、 order by を使用してそれらをランダム化します。

于 2013-08-21T15:25:09.527 に答える
0

私がこれを試みる方法は次のとおりです。

SELECT TOP 100 [Column_Name]
FROM ...
WHERE [Column_Name] >= DATEADD(hour,-1,GETDATE());
ORDER BY NEWID()

これにより、過去 1 時間以内に作成された 100 件のレコードが取得され、ランダムに収集されます。

于 2013-08-20T22:49:34.600 に答える
0

次の手順で解決しました

ID、日時、文字列rownoで新しいテーブルを作成しました。rowno では、100 行の乱数 ID を選択し、COMMA 区切り形式で保存しました。

正常に動作しています。

上記の提案された解決策のほとんどで、何かが欠けていると思います。適切に質問できなかった可能性があります。

ご提案いただきありがとうございます。

于 2013-08-26T13:29:30.480 に答える