如何从相关子查询中检索列到结果集中

问题描述 投票:0回答:1

我需要从相关子查询中获取MyRandom列。

select V_Main.vendorName, myRandom from Vendors V_Main 
WHERE 0 < 
(SELECT RAND() as myRandom  FROM Vendors V_Sub WHERE V_Main.VendorID = V_Sub.vendorID)

该模式只是普遍存在的AP数据库中的Vendors表:enter image description here

enter image description here

sql sql-server correlated-subquery
1个回答
1
投票

你不能。你可以使用joinapply

select V_Main.vendorName, myRandom
from Vendors V_Main cross apply
     (SELECT RAND() as myRandom 
      FROM Vendors V_Sub
      WHERE V_Main.VendorID = V_Sub.vendorID
     ) r
WHERE 0 < r.myRandom;

这似乎是非常奇怪的逻辑。 rand()每个查询只执行一次,它应该始终为正数。所以,代码永远不会做任何事情。

如果你想要一个随机数,那么像rand(checksum(newid()))这样的方法就是一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.