sql 服务器中的 RAND() 函数

RAND() function in sql server

任何人都可以帮助我了解如何在 SQL 服务器中使用 RAND() 函数吗?

我有一个场景,我想根据评分以随机顺序从产品 table 中获取随机产品。

此外,在此我想优先考虑评级较高的产品而不是评级较低的产品。

但并不是每次只有较高评级的产品才会排在首位;有时评级较低的产品应该排在最前面。

截至目前,我是通过NEWID()完成的,每次都会给我随机顺序,但不考虑产品排名。

Table 列:ProductID, ProductName, Rating

SELECT ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder

此查询每次都会给我随机产品,但大多数时候都没有满足我的标准,即评分较高的产品比评分较低的产品高。

只需将行号乘以评级和降序排列即可:

SELECT Rating * ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder DESC