第一:你觉得我随机的方式怎么样?这样是不是太穷了。。
我有一个表 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
问题是:我总是得到以“7”开头的 4 或 5 行,有时我得到以“5”开头的 3 或 2 行......我想避免重复。我赞赏任何建议。
谢谢。