2009-05-02 49 views
0

我想獲取表格的頂部#nr_of_rows - (int)(#nr_of_rows/10 - 1)。因此,如果你有63行,它將返回3行,90行將返回10,85將返回5,等等。當然這可以在兩個查詢中完成,只是想知道是否可以在一個查詢中完成。如何獲得一個動態的最高行數?

如果你們知道一個直接的SQL查詢,這將是偉大的,但理想情況下,我想要一個LINQ到SQL答案。

回答

2
SELECT TOP 10 PERCENT * FROM Table 

DECLARE @pct AS INT 
SELECT @pct = (COUNT(*)/10)-1 FROM Table 

SELECT TOP (@pct) * FROM Table 

DECLARE @pct AS INT 
SELECT @pct = (COUNT(*)/10)-1 FROM Table 

SET ROWCOUNT @pct 

SELECT * FROM Table 

我很虛弱了LINQ到SQL,但我不認爲你不能避免2個查找,因爲你仍然需要子查詢來獲得計數(*),生成的sql仍然會有這個似曾相識的帖子似乎驗證的子查詢LINQ version of TOP PERCENT

+0

他說直sql。 – 2009-05-02 01:01:19

0

我不明白你的公式如何映射到例子。 90 - (int)(90/10 - 1)是82.但基本概念是:

select * from foo limit(select count() - (select(count()/ 10 - 1)) );

只是希望你有一個體面的查詢優化器。

相關問題