CREATE TABLE MyTable(RowID int IDENTITY(1,1), Col1 int,Col2 int,Col3 int,Col4 int . )
DECLARE @RowCount int,
@numberRecords int
select @NumberRecords = count(*) from mytable
SET @RowCount = 1
WHILE @RowCount <= @NumberRecords
BEGIN
UPDATE MyTable
SET Col1 = (SELECT TOP 1 RandomColumn1
FROM SampleData
ORDER BY NEWID())
WHERE RowID = @RowCount
SET @RowCount = @RowCount + 1
END
使用适合您需求的递增数字构建样本数据表 . 你可以使用一个循环,但如果你做很多行,tally table或a recursive CTE会快得多 . 然后,使用示例数据 ORDER BY NEWID() 更新 Table1 的相应列 . 这将随机化选择集的顺序 .
UPDATE Table1
SET Col1 = (SELECT TOP 1 RandomColumn1
FROM SampleData
ORDER BY NEWID())
您可能还会看到 RedGate's Data Generator 是否适合您 . 我有它,但从未使用它 .
2
我倾向于使用这样的东西:
WITH SampleData (entity_number, entity_name)
AS (
... row constructors here...
),
SampleDataOrdered (order_col, entity_number, entity_name)
AS (
SELECT ROW_NUMBER() OVER(ORDER BY NEWID()),
S1.entity_number, S1.entity_name
FROM SampleData AS S1
)
MERGE INTO MyBaseTable...;
1
我宁愿更喜欢运行下面的代码并等待一段时间来运行和更新随机值
while 1=1
BEGIN
UPDATE top (10) a
SET value =rand() * 100
from (select top 10 * from
MyTable
order by newid()
) a
END
Update Table1
Set Col2 = (Cast(CAST(newid() AS binary(1)) AS int) % 9 + 1) *10
Where Substring(Table1.Col1,len(Table1.Col1)-2,3) = '001'
Update Table1
Set Col3 = Cast(CAST(newid() AS binary(3)) AS int)
Where Substring(Table1.Col1,len(Table1.Col1)-2,3) = '001'
Create table #temp1(tCol1 varchar(50),
tCol2 varchar(10),randomnum varchar(max) )
Insert Into #temp1
Select Table1.Col1,Table2.Col1,newid() as random1
From Table1
Cross Join Table2
Where Substring(Table1.Col1,len(Table1.Col1)-2,3) = '001'
Update Table1
Set Table1.Col4 = tCol2
From (
Select tCol1,tCol2,a.randomnum
From (
Select Max(randomnum) As randomnum
From #temp1 Group By tCol1
) a
Left Join #temp1 On a.randomnum = #temp1.randomnum
) b
Inner Join Table1 On b.tCol1 = Table1.Col1
Drop table #temp1
5 回答
CREATE TABLE MyTable(RowID int IDENTITY(1,1),
Col1 int,Col2 int,Col3 int,Col4 int . )
希望这是一些帮助...扩展我的答案..你可以看到我创建你的表但添加一个递增的行id列 . 然后我创建一个循环,在每行的行上运行更新语句 .
非常类似于光标的运行方式,但希望更快 .
我想这可以让你开始走正确的道路 .
使用适合您需求的递增数字构建样本数据表 . 你可以使用一个循环,但如果你做很多行,tally table或a recursive CTE会快得多 . 然后,使用示例数据
ORDER BY NEWID()
更新Table1
的相应列 . 这将随机化选择集的顺序 .您可能还会看到 RedGate's Data Generator 是否适合您 . 我有它,但从未使用它 .
我倾向于使用这样的东西:
我宁愿更喜欢运行下面的代码并等待一段时间来运行和更新随机值
我更喜欢总是使用基于集合的解决方案 . 这是我开发的基于集合的解决方案 . 我测试了它,它的工作原理 .