首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

[Help-SQL]:下次使用Random函数更新表列时,我不希望单元格中出现相同的数字

Help-SQL:下次使用Random函数更新表列时,我不希望单元格中出现相同的数字。

答案:

在使用Random函数更新表列时,如果不希望单元格中出现相同的数字,可以采取以下两种方法:

  1. 使用随机种子: Random函数生成的随机数是根据一个种子值计算得出的,如果种子值相同,生成的随机数也会相同。因此,可以在更新表列之前设置一个不同的随机种子,以确保生成不同的随机数。具体操作如下:
代码语言:sql
复制
-- 设置随机种子
DECLARE @seed INT = DATEPART(MILLISECOND, GETDATE())

-- 更新表列
UPDATE 表名
SET 列名 = ABS(CHECKSUM(NEWID())) % (最大值 - 最小值 + 1) + 最小值

其中,表名为要更新的表名,列名为要更新的列名,最大值最小值为随机数的范围。

  1. 使用循环更新: 另一种方法是使用循环更新的方式,通过判断当前单元格的值是否与上一个单元格的值相同,如果相同则重新生成随机数,直到不相同为止。具体操作如下:
代码语言:sql
复制
-- 创建临时表
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

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spread for Windows Forms快速入门(4)---常用的单元格类型(上)

    单元格类型定义了在单元格中呈现的信息的类型,以及这种信息如何显示,用户如何与其进行交互。单元格类型可以被赋给单个的单元格,整行或者整列。 用户可以使用两种不同的单元格类型对表单中的单元格进行设置: 一种是可以简单地关联于单元格的文本格式,另一种就是显示控件或者图形化信息。我们在本篇介绍常用的文本单元格类型,下一篇介绍常用的图形单元格类型。 通用单元格GeneralCellType 对于表单中的单元格而言,通用单元格是默认的单元格类型。 除非你指定了其他的单元格类型,控件通常会默认将通用单元格类型赋给单元格。

    06

    Word域的应用和详解

    ■第一章 域基础 一、域的作用   微软的文字处理软件Microsoft Word系列,其方便和自动化程度是其他任何文字处理软件所望尘莫及的。究其原因,其一,微软有强大的软件开发技术人员队伍。其二,Word与其本公司的操作系统 Windows的密切结合。微软至今也没有公布Windows 操作系统和Word 文字处理软件的源代码,就是为了保住自己的垄断地位。其三,在 Word 中引入了域和宏,将某些特殊的处理方法用函数或编程的的形式交给用户,大大提高了文字处理的灵活性、适应性和自动化程度。   由于域和宏的引入,Word 文档易受病毒的攻击。此外,要灵活使用域和宏,要求用户学习一定的编程基础知识。一提到编程,有的人就感到头痛。其实,Word中的域和宏所包含的知识是非常基础的,也是比较容易学会的。   域相当于文档中可能发生变化的数据或邮件合并文档中套用信函、标签的占位符。   通过域,可以调用宏 命令;也可以通过宏的语句在文档中插入域。   现在我们通过举例来简单了解一下Word 中的域能干些什么:    1. 给段落自动编号,如:1. 2. 3. ,一、二、三、,1.1.1,1.1.2,等等。    2. 插入用常规方法无法实现的字符,如:

    02
    领券