【问题标题】: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】:

    你不能。您可以使用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())) 是一种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 2019-10-06
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多