結果が返されない場合は、クエリを繰り返す方法についてアドバイスしてください。私はRAND
を使用してDBからランダムな人物を生成しようとしていますが、その番号が以前に使用されていない(その情報は "allready_drawn"という列に格納されている) 2番目の条件"is null"
のために、クエリが前に描画された番号を超えたとき、結果は表示されません。 数字を思いつくまで、私は再度クエリを再実行する必要があります。結果が返ってこない場合は、クエリを繰り返してください。
DECLARE @min INTEGER;
DECLARE @max INTEGER;
set @min = (select top 1 id from [dbo].[persons] where sector = 8 order by id ASC);
set @max = (select top 1 id from [dbo].[persons] where sector = 8 order by id DESC);
select
ordial,
name_surname
from [dbo].[persons]
where id = ROUND(((@max - @min) * RAND() + @min), 0) and allready_drawn is NULL
結果(2つの可能な結果):
任意の提案が高く評価され、私は事前にみんなに感謝したいと思います。
最終的なクエリではなく、 '@ min'と' @max'に対してなぜ 'sector'を制限しますか? –
@GordonLinoff - 良い質問私の友人:)それは私が他のものに集中していたので、私から離れましたので、そこにそれを追加することについても忘れてしまいました.../ –