从函数SQL服务器内部的表中获取一个随机行

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

我在sql中有此过程。要求是:如果条件(例如,我放1 = 1 ..),则[运行另一个将从表中随机抽取一个值并将其返回的过程或函数。]否则1例如:

 case when 1=1 then (dbo.myFunc @input) else 1

这是myTable:'1','2','3'我希望此函数从中随机取一个值

CREATE FUNCTION dbo.myFunc (@input int)
RETURNS int
AS BEGIN
    declare @rndValue int
    set @rndValue = (SELECT top 1 * FROM myTable ORDER BY newID())
    RETURN @rndValue 
END

问题是,在函数中我无法运行newID(),并且如果我想使用过程而不是函数,则无法从case语句中运行它。

您的建议是什么?非常感谢。

sql-server random case procedure newid
1个回答
0
投票

我认为您需要这样的代码:

set x = case when 1=1 then (select top(1) val from myTable order by newid()) else 1 end;

SQL Fiddle

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