SQL Server &ASP.净,c#:从前20张图片中随机选择5张

本文关键字:20张 随机 5张 选择 从前 Server ASP SQL | 更新日期: 2023-09-27 18:15:42

我有一个小SQL问题。

我想在ID最高的20行中随机选择5行。我怎么做呢?现在我的SqlDataSource看起来像这样:

<asp:SqlDataSource ID="SqlDataSource25" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
     ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
     SelectCommand="SELECT TOP 5 * FROM [billeder] ORDER BY newid()">  
</asp:SqlDataSource>

这意味着我当然只是从整个表中随机得到5个。

我更愿意通过SqlDataSource来做,正如你在这里看到的,但如果它只能通过代码隐藏来实现,那也很好。

SQL Server &ASP.净,c#:从前20张图片中随机选择5张

您需要使用子查询按ID获取前20名,然后从这20名中选择前5名:

SELECT TOP 5 * 
FROM (  SELECT  TOP 20 * 
        FROM [billeder] 
        ORDER BY ID DESC
    ) AS t 
ORDER BY NEWID();
select  * from [billeder] where [yourPk] in 
(select top 5 percent [yourPk] from [billeder] order by newid())

yourPk is primarykey