我希望得到表格的#nr_of_rows - (int)(#nr_of_rows / 10 - 1)。因此,如果您有63行,它将返回3行,90行将返回10,85将返回5等等。当然,这可以在两个查询中完成,只是想知道它是否可以在一个查询中完成。 / p>
如果你们知道一个直接的SQL查询,它会很棒,但理想情况下我想要一个linq to sql answer。
答案 0 :(得分: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
答案 1 :(得分:0)
我不了解您的公式如何映射到示例。 90 - (int)(90/10 - 1)是82.但基本概念是:
从foo限制中选择*(选择计数() - (选择(计数()/ 10 - 1)));
希望你有一个不错的查询优化器。