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

时间:2018-03-05 22:01:19

标签: sql sql-server correlated-subquery

我需要从相关子查询中获取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

1 个答案:

答案 0 :(得分: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()))之类的东西就是一种方法。