【问题标题】:How to retreive a column from the correlated subquery into the results set如何将相关子查询中的列检索到结果集中
【发布时间】:2018-03-05 22:01:19
【问题描述】:
我需要从相关子查询中获取 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 表:
【问题讨论】:
标签:
sql
sql-server
correlated-subquery
【解决方案1】:
你不能。您可以使用join 或apply:
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())) 是一种方法。