我在SQL Server中已经填满了一个数据库表;现在我需要添加一个从1到5的随机数的新列(它们可以重复(。
要填充的行太多了,手动操作对我来说是行不通的。
我在互联网上搜索但没有找到任何有用的东西,有人知道该怎么做吗?
您可以使用ALTER TABLE
添加新列,并同时为其指定DEFAULT
值。如果还想填充这些值,请使用WITH VALUES
:
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;
一种方法是:
select t.*,
1 + floor( rand(newid()) * 5 )
from t;
您可以将其合并到update
:
update t
set col = 1 + floor( rand(newid()) * 5 );