有没有人可以帮助我理解如何在SQL Server中使用RAND()函数?
我有一个场景,在这个场景中,我想要在评级的基础上以随机顺序从products表中获取随机产品。
此外,在这一点上,我想优先考虑评级较高的产品,而不是评级较低的产品。
但并不是每次都只有评级较高的产品会排在订单的首位;有时评级较低的产品应该排在首位。
到目前为止,我是通过NEWID()完成的,它每次都会给我随机的排序,但它不会考虑产品的排名。
表列:ProductID, ProductName, Rating
SELECT ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder这个查询每次都会给我随机的产品,但并不能满足我在大多数情况下获得较高评级产品而不是较低评级产品的标准。
发布于 2020-07-10 22:02:54
只需将行号与评级和顺序相乘即可:
SELECT Rating * ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder DESChttps://stackoverflow.com/questions/62835510
复制相似问题