Sql server 使用CTE和NEWID()更新表
我想尝试使用同一个表中的随机值更新一个表,但原始表没有标识或任何其他数字列Sql server 使用CTE和NEWID()更新表,sql-server,random,common-table-expression,Sql Server,Random,Common Table Expression,我想尝试使用同一个表中的随机值更新一个表,但原始表没有标识或任何其他数字列 WITH cteTable1 AS ( SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS n, ENDE_NO_Address FROM TableX ) UPDATE TableX SET ENDE_NO_Address = ( SELECT ENDE_NO_Address FROM cteTable1 WHERE cteTable1.n
WITH cteTable1 AS (
SELECT
ROW_NUMBER() OVER (ORDER BY NEWID()) AS n,
ENDE_NO_Address
FROM TableX
)
UPDATE TableX SET ENDE_NO_Address = (
SELECT ENDE_NO_Address
FROM cteTable1
WHERE cteTable1.n = This is the problem...
需要帮助的tnks猜测
UPDATE TableX
SET ENDE_NO_Address = (
SELECT TOP 1 ENDE_NO_Address FROM TableX ORDER BY NEWID()
)
编辑:
WITH cte AS (
SELECT
ROW_NUMBER() OVER (ORDER BY NEWID()) AS n1,
ROW_NUMBER() OVER (ORDER BY (select 1)) AS n2,
ENDE_NO_Address
FROM TableX
)
update C1 set
ENDE_NO_Address = C2.ENDE_NO_Address
from cte as C1
inner join cte as C2
on C1.n1 = C2.n2
还有!?!?!!?!你的问题是什么??它不起作用吗?b) 给你一个错误(如果是:什么错误?),或者c)不给随机值??那么你说的表没有主键?@gbn:那么它不是一个真正的表……:-)我需要使用表中的原始信息来随机更新。原始表没有PK。结果与我发布的结果会有点不同。使用随机值可能更正确。我的版本不重用地址。因此,我猜我的版本实际上是对数据进行加扰,而不是像OP所说的“使用随机值”。最后一个版本将所有列都置为null,但我将select 1更改为ENDE_NO_地址,工作正常。。。TNKS alot@Ricardo-奇怪,在我的测试中没有。第一个使用表变量的方法对您有效吗?除非某个地方有错别字,否则它们是一样的。
WITH cte AS (
SELECT
ROW_NUMBER() OVER (ORDER BY NEWID()) AS n1,
ROW_NUMBER() OVER (ORDER BY (select 1)) AS n2,
ENDE_NO_Address
FROM TableX
)
update C1 set
ENDE_NO_Address = C2.ENDE_NO_Address
from cte as C1
inner join cte as C2
on C1.n1 = C2.n2