2017-04-10 65 views
-2

如何选择10个条目的最大倍数?如何选择10个条目的最大倍数?

我有一个SQL表中的数据是有意义的,如果只看到一堆10条目。我想写一个这样做的查询。从表中选择前10 * n条件。

如果对于前。 53个条目满足条件,我只想看到50个,最后3个被丢弃。

Plz help。 KBV

+2

为了提高您的问题的质量,请显示您已完成的研究的证据,以及这些研究如何提供帮助以及未提供的帮助。请在问题中显示带有示例数据的示例表格(不作为链接文件)。请显示您尝试过的代码格式为代码示例(突出显示代码并单击文本输入区域上方的“{}”按钮)。请显示您遇到困难的任何错误消息。请在问题中以文字形式显示您的期望输出。请阅读http://stackoverflow.com/help/how-to-ask了解更多信息。 – toonice

回答

0

如何:

declare @rows int; 
set @rows = ((select count(*) from table where condition)/10)*10 

select top @rows * from table where condition 
+0

你好Psidom,SQL在最后一行整齐的@rows中显示错误。它说这个整数,或者真正的预期。任何事情都可以做到这一点? –

+0

好的队友,解决了它。只需在最后一行放置一个托架,就像一个魅力一样。非常感谢。 –

0

试试这个:

with CTE AS (
    SELECT * FROM Table WHERE Condition 
) 
Select top(((SELECT COUNT(*) FROM CTE)/10)*10) * From CTE 
0

请考虑以下...

SELECT orderField, 
     field1, 
     ... 
FROM tblTable 
WHERE condition 
ORDER BY orderField 
LIMIT 10 * numberOfGroups; 

当构建您的查询首先决定你想要哪些字段。在一个简单的表格查询中,您可以相当安全地使用SELECT *,但是如果您指的是数据集,那么您应该考虑指定要使用哪些字段并将别名分配给这些字段。

确保无论您的orderFieldorderFields被调用,它们都会被通配符覆盖,如*或被明确指定。

上面的代码首先选择符合您的criteria的所有记录。然后根据您为ORDER BY指定的字段或字段对结果列表进行排序。注意:以上假设您基于表中的现有值进行排序。如果您需要根据计算值进行排序,则可能需要添加另一个(次要)复杂度级别。

LIMIT将从排序列表中获取第一个指定数量的记录。 LIMIT接受简单地计算出的值,如2 * 210 * numberOfGroups,其中numberOfGroups是可变的代码或明确地替换numberOfGroups的值预先设定的(即10 * @numberOfGroups其中@numberOfGroups先前已经设置为510 * 5)。

如果您有任何问题或意见,请随时发布相应评论。