Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中添加随机数介于1和5之间的新列_Sql_Sql Server - Fatal编程技术网

在SQL Server中添加随机数介于1和5之间的新列

在SQL Server中添加随机数介于1和5之间的新列,sql,sql-server,Sql,Sql Server,我在SQL Server中有一个已填充的数据库表;现在我需要添加一个新的列,随机数从1到5(它们可以重复) 要填充的行太多了,手动填充行不通 我在网上搜索,但没有找到任何有用的东西,有人知道怎么做吗 一种方法是: select t.*, 1 + floor( rand(newid()) * 5 ) from t; 您可以将其合并到更新中: update t set col = 1 + floor( rand(newid()) * 5 ); 一种方法是: select t

我在SQL Server中有一个已填充的数据库表;现在我需要添加一个新的列,随机数从1到5(它们可以重复)

要填充的行太多了,手动填充行不通

我在网上搜索,但没有找到任何有用的东西,有人知道怎么做吗

一种方法是:

select t.*,
       1 + floor( rand(newid()) * 5 )
from t;
您可以将其合并到
更新中

update t
    set col = 1 + floor( rand(newid()) * 5 );
一种方法是:

select t.*,
       1 + floor( rand(newid()) * 5 )
from t;
您可以将其合并到
更新中

update t
    set col = 1 + floor( rand(newid()) * 5 );

您可以使用
altertable
添加一个新列,同时为其指定一个
DEFAULT
值。如果还想填充这些值,请使用带有值的

CREATE TABLE dbo.YourTable (ID int);
GO

INSERT INTO dbo.YourTable (ID)
VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
GO
--Add new column with DEFAULT value (1-5)
ALTER TABLE dbo.YourTable ADD NewColumn int DEFAULT ABS(CHECKSUM(NEWID()))%5+1 WITH VALUES;
GO
--Check values
SELECT *
FROM dbo.YourTable;
--Add a new row
INSERT INTO dbo.YourTable (ID)
VALUES(11);
--Check value
SELECT *
FROM dbo.YourTable
WHERE ID = 11;

GO
DROP TABLE dbo.YourTable;

您可以使用
altertable
添加一个新列,同时为其指定一个
DEFAULT
值。如果还想填充这些值,请使用带有值的

CREATE TABLE dbo.YourTable (ID int);
GO

INSERT INTO dbo.YourTable (ID)
VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
GO
--Add new column with DEFAULT value (1-5)
ALTER TABLE dbo.YourTable ADD NewColumn int DEFAULT ABS(CHECKSUM(NEWID()))%5+1 WITH VALUES;
GO
--Check values
SELECT *
FROM dbo.YourTable;
--Add a new row
INSERT INTO dbo.YourTable (ID)
VALUES(11);
--Check value
SELECT *
FROM dbo.YourTable
WHERE ID = 11;

GO
DROP TABLE dbo.YourTable;

用您正在使用的数据库标记您的问题。@GordonLinoff我正在使用Microsoft Sql 2018.1。请在表中添加一个新列。2.更新表格,设置列的值。3.更改表格以设置新的约束。您的问题出在哪一步?您是指
默认值介于1-5之间的列,还是指每次引用时随机数介于1-5之间的新列(并且每次都可能不同)?@Serg我需要一个Sql查询来填充表格,我添加了该列,基本上只需要查询就可以完成我的工作,因为它是一个大数据库。请用您正在使用的数据库标记您的问题。@GordonLinoff我正在使用Microsoft Sql 2018.1。向表中添加一个新列。2.更新表格,设置列的值。3.更改表格以设置新的约束。您的问题出在哪一步?您是指
默认值介于1-5之间的列,还是指每次引用时随机数介于1-5之间的新列(并且每次都可能不同)?@Serg我需要一个Sql查询来填充表格,我添加了该列,只是需要查询来完成我的工作,因为它是一个大数据库。