2015-10-01 78 views
0

我有一點SQL問題。SQL Server&ASP.NET&C#:從前20張圖片中選擇5張隨機圖片

我想選擇最高的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來做到這一點,正如你可以在這裏看到的那樣,但是如果只有通過代碼隱藏纔可能做到這一點,那也不錯。任何提示將不勝感激。

回答

3

你需要使用一個子查詢來獲取由ID的前20名,然後這20您可以選擇前5名:

SELECT TOP 5 * 
FROM ( SELECT TOP 20 * 
     FROM [billeder] 
     ORDER BY ID DESC 
    ) AS t 
ORDER BY NEWID(); 
+0

謝謝你,這使這行得通! :)感謝所有人的快速支持,以及非常感謝的傢伙。 – tekar

0
select * from [billeder] where [yourPk] in 
(select top 5 percent [yourPk] from [billeder] order by newid()) 

yourPk是PrimaryKey的