Help-SQL:下次使用Random函数更新表列时,我不希望单元格中出现相同的数字。
答案:
在使用Random函数更新表列时,如果不希望单元格中出现相同的数字,可以采取以下两种方法:
-- 设置随机种子
DECLARE @seed INT = DATEPART(MILLISECOND, GETDATE())
-- 更新表列
UPDATE 表名
SET 列名 = ABS(CHECKSUM(NEWID())) % (最大值 - 最小值 + 1) + 最小值
其中,表名
为要更新的表名,列名
为要更新的列名,最大值
和最小值
为随机数的范围。
-- 创建临时表
CREATE TABLE #temp
(
ID INT IDENTITY(1,1),
列名 数据类型
)
-- 插入数据
INSERT INTO #temp (列名)
SELECT 列名 FROM 表名
-- 更新表列
DECLARE @prevValue 数据类型
DECLARE @currValue 数据类型
UPDATE #temp
SET 列名 =
CASE
WHEN @prevValue = 列名 THEN
BEGIN
SET @currValue = ABS(CHECKSUM(NEWID())) % (最大值 - 最小值 + 1) + 最小值
WHILE @currValue = @prevValue
BEGIN
SET @currValue = ABS(CHECKSUM(NEWID())) % (最大值 - 最小值 + 1) + 最小值
END
SET @prevValue = @currValue
SET @currValue
END
ELSE
BEGIN
SET @prevValue = 列名
列名
END
END
-- 更新原表
UPDATE 表名
SET 列名 = t.列名
FROM 表名 AS t
JOIN #temp AS tmp ON t.ID = tmp.ID
-- 删除临时表
DROP TABLE #temp
其中,表名
为要更新的表名,列名
为要更新的列名,最大值
和最小值
为随机数的范围,数据类型
为列的数据类型。
这两种方法可以有效地避免在使用Random函数更新表列时出现相同的数字。在腾讯云的数据库产品中,可以使用云数据库 TencentDB 来存储和管理数据,具体产品介绍和链接地址请参考:腾讯云数据库 TencentDB。
领取专属 10元无门槛券
手把手带您无忧上云