考虑这些数据:
CREATE TABLE #Data (DataID INT,Code VARCHAR(2),Prefix VARCHAR(3)) INSERT INTO #Data (DataID,Code) VALUES (1,'AA'),(2,(3,(4,(5,(6,'AA') CREATE TABLE #Prefix (Code VARCHAR(2),Prefix VARCHAR(3)) INSERT INTO #Prefix (Code,Prefix) VALUES ('AA','ABC'),('AA','DEF'),'GHI'),'JKL')
我想将#Data中的前缀值设置为#Prefix中的随机前缀,并带有匹配的代码.
使用直接内连接只会导致使用一个值:
UPDATE D SET Prefix = P.Prefix FROM #Data AS D INNER JOIN #Prefix AS P ON D.Code = P.Code
从这里阅读其他问题,建议将NEWID()作为随机排序的方式.将联接更改为:
SELECT TOP 1 subquery ordering by NEWID()
UPDATE D SET Prefix = (SELECT TOP 1 P.Prefix FROM #Prefix AS P WHERE P.Code = D.Code ORDER BY NEWID()) FROM #Data AS D
所以,我不确定如何从单个更新语句中为每个数据条目获取随机前缀.我可以通过#Data表进行某种循环,但我避免在sql中触及循环,我确信这会很慢.它的实际应用将在成千上万的记录中,数十个代码有数百个前缀.
解决方法
原文地址:https://www.jb51.cc/mssql/77453.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。