Во-первых: что вы думаете о том, как я случайно?Это слишком плохо?.
У меня есть таблица TABLE_A:
id | name | state
---------------------|----------
1703248 | blablabla | 1
... | blablabla | 0
7873415 | blablabla | 1
7926033 | blablabla | 1
Столбец id также может содержать буквенно-цифровые значения, например, 'zxg-76354GH-34347'.Ну, у меня 3060 записей.
Деталь:
select count(1) from TABLE_A where id like 'n%'
, если:
n=1 ---> 201 records , n=2 ---> 147 records , n=3 ---> 187 records
n=4 ---> 327 records , n=5 ---> 430 records , n=6 ---> 503 records
n=7 ---> 1175 records , n=8 ---> 35 records , n=9 ---> 55 records
Моя хранимая процедура, которая рандомизирует:
--Name: Randomize_sp
BEGIN
DECLARE @temp table(id varchar(50))
--RANDOM 1
INSERT INTO @temp
SELECT id FROM TABLE_A
WHERE state > 0
ORDER BY RAND(CHECKSUM(NEWID()))
--RANDOM 2
SELECT top 1 id FROM @temp ORDER BY RAND(CHECKSUM(NEWID()))
END
Я называю эту хранимую процедуру много раз или 'n' раз (мне нужно сделать это):
BEGIN
DECLARE @nTimes int, @i int
DECLARE @tempT table(id varchar(50))
SET @nTimes = 12
SET @i = 0
WHILE @i < @nTimes
BEGIN
INSERT INTO @tempT
EXECUTE MyDB.dbo.Randomize_sp
SET @i = @i + 1
END
SELECT id FROM @tempT
END
Проблема в том, что всегда я получаю 4 или 5 строк, начинающихся с '7', иногда я получаю3 или 2 строки, которые начинаются с «5» ... Я бы хотел избежать повторений.Я ценю любое предложение.
Спасибо.