我写了一个随机函数dbo.UDF_Q_RandomNumber()
,它生成一个介于 0 和 1 之间的浮点型随机数。
DECLARE @upper = 10
DECLARE @lower = 1
SELECT
ROUND(CAST((@lower + (@upper - @lower) * dbo.UDF_Q_RandomNumber()) AS INT), 0)
上面的代码生成一个介于 1 到 10 之间的随机数。
现在我创建了一个#tempTable
包含 10 行的临时表,其中包含列Id
和Number
.
Id Number
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
SQL查询:
CREATE TABLE #tempTable(Id INT, Number INT)
INSERT INTO #tempTable VALUES (1,1)
INSERT INTO #tempTable VALUES (2,2)
INSERT INTO #tempTable VALUES (3,3)
INSERT INTO #tempTable VALUES (4,4)
INSERT INTO #tempTable VALUES (5,5)
INSERT INTO #tempTable VALUES (6,6)
INSERT INTO #tempTable VALUES (7,7)
INSERT INTO #tempTable VALUES (8,8)
INSERT INTO #tempTable VALUES (9,9)
INSERT INTO #tempTable VALUES (10,10)
DECLARE @maxCount INT;
SELECT @maxCount= COUNT(1) FROM #tempTable
SELECT * FROM #tempTable
SELECT Number
FROM #tempTable
WHERE Id = ROUND(CAST((1+(@maxCount-1)*dbo.UDF_Q_RandomNumber())AS INT),0)
DROP TABLE #tempTable
这里是查询
SELECT Number
FROM #tempTable
WHERE Id = ROUND(CAST((1+(@maxCount-1)*dbo.UDF_Q_RandomNumber()) AS INT), 0)
有时它返回 2 行,有时返回 null 不应该出现,因为选择的 Id 介于 1 和 10 之间(临时表中的行),并且每个 Id 也有值。
请帮忙 。