我有两个表Accounts
和Proxies
。
我现在要在Proxies
表中随机分配代理,因此Accounts
表中有近100个代理。我正在使用此查询:
update Accounts set proxy= (select top 1 proxy from Proxies order by newid())
但是它会使用相同的代理更新所有行,从理论上看查询,我相信它应该为每行随机获得一个新的代理。
答案 0 :(得分:3)
这是因为它是不相关的子查询,并且只计算一次。 尝试将其更改为:
update A
set proxy= (select top 1 proxy from Proxies P WHERE P.proxy-P.proxy=A.proxy-A.proxy order by newid())
FROM Accounts A
http://sqlfiddle.com/#!18/c68ce/4/1
此查询类似于0 = 0,但与优化程序POV相关联
答案 1 :(得分:0)
使用$.parseXML()
子句示例
where
答案 2 :(得分:0)
尝试此查询。
UPDATE t1
SET t1.proxy= t2.proxy
FROM Accounts t1
CROSS APPLY (
SELECT TOP 1 p.proxy
FROM Proxies p
WHERE p.proxy= t1.proxy
ORDER BY newid()
) t2