当前位置:Gxlcms > 数据库问题 > 【SQL】从待选项中随机选一个

【SQL】从待选项中随机选一个

时间:2021-07-01 10:21:17 帮助过:24人阅读

@choice INT = ( SELECT Amount FROM (VALUES ( 88, 0) ,(118, 1) ,(138, 2) ,(188, 3) --缺点1:需要手动编号,有弄错的可能 ) AS a(Amount,RowNo) WHERE RowNo = FLOOR(4*RAND())) --缺点2:需要手动指定待选项数目,有弄错的可能

写法2:

WITH前加分号是一种保险的写法,否则可能遇到消息336的语法问题。

DECLARE @choice INT
;WITH cte AS (SELECT ROW_NUMBER() OVER(ORDER BY Num) AS RowNo,Num FROM (VALUES
 (88)
,(118)
,(138)
,(188)
) AS a(Num))
SELECT @choice=Num FROM cte WHERE RowNo=CEILING((SELECT COUNT(1) FROM cte)*RAND())

求更好写法,感谢。

-EOF-

【SQL】从待选项中随机选一个

标签:server   需求   and   where   rom   ice   div   eof   sel   

人气教程排行