SQL选择顶部和随机填充

时间:2014-09-10 13:40:23

标签: sql sql-server

我想选择并将表格中的顶部4650字段插入表格b列e。如何使用表格列g中的数据随机填充此列?如何替换e列中已存在的数据?在多个部分中这样做会更容易吗?

3 个答案:

答案 0 :(得分:1)

如果这仅适用于单个列,那么这应该对您有用。

insert into tableB (columnE)
select top(4650) columnG from tableA

如果表之间存在关系,那么你可以做这样的事情

Update x
set columnE = y.columnG 
from tableB as x
inner join (select top(4650) ID from tableA) as y
on x.ID = y.ID

你也可以利用CTE

;with as 
(
   select top (4650) id,ColumnG 
   from TableA
) Y

update X
set columnE = Y.ColumnG
from TableB as X
inner join Y on x.ID = y.ID

我们需要表格的结构来完全回答你的问题

答案 1 :(得分:0)

这个答案假设有两件事:A)你的Products表有一个不间断的自动递增Id列(通过unbroken我的意思是没有删除的行会导致int跳转)和b)你的Orders有一个int PK Id列< / p>

DECLARE @MaxProductId int
SELECT @MaxProductId = MAX(Id) FROM Product

SELECT p.Description, o.Id
FROM Product p
JOIN Order o
    ON p.Id = o.Id % @MaxProductId

这将随意将产品加入订单。如果您喜欢所看到的内容,可以将p列更改为您的g列。然后,您可以使用UPDATE和此选择加入订单的ID。

答案 2 :(得分:0)

嗯,我实际上是完全不同的。我用2个字段Temp1,Temp2创建了一个临时表。我取出所有产品并将它们放入Temp1然后使用了两个不同的更新。一个用于向Temp2添加随机数字,另一个用于将TableToUpdate更改为那些临时数字。这样我可以对其他表执行此操作,数据看起来不同但保留了销售预测结构。

更新TempTable SET [Temp2] = abs(校验和(NewId()))%5000 + 10000

更新TableToUpdate SET Product =(SELECT Temp2                          来自TempTable                          WHERE TableToUpdate.Product = TempTable.Temp1)

感谢大家的意见。