0

我尝试获取一个表的 10 个随机行。有很多类似的问题,但我还有一个附加条件:我希望这个列表每周更新一次,每年更新 52 次。这 10 件商品将成为“本周的随机特色商品”。

因此,我发现每次调用脚本时都会更改随机行的这段代码

select top 10 percent * from [yourtable] order by newid();

它的问题是我不能简单地添加一个种子,在这种情况下就是week-of-year. 知道如何实现吗?

4

1 回答 1

0

您的代码示例是 T-SQL (SQL Server)。因此,在 SQL Server 中执行此操作非常简单:

select *
from (select t.*,
             row_number() over (partition by datepart(wk, thedate) order by newid()) as seqnum
      from [yourtable] t
     ) t
where seqnum <= 10;

MySQL 不支持row_number(),因此该数据库中的方法会有所不同。

于 2013-05-24T02:37:58.560 回答