SQLite LIMIT OFFSET和WHERE子句

时间:2015-07-08 13:56:32

标签: sql sqlite

我有表Test1 => ID(INT), NAME(VARCHAR)有 像(1,'One'), (2,'two') ..... (51,'Fifty-one')

这样的值

我希望最后5行的ID总和ID可以被5整除。我尝试了以下查询,但没有得到任何输出:

SELECT SUM(ID) FROM Test1 WHERE id%5 = 0 LIMIT 5 OFFSET (SELECT COUNT(*) FROM Test1)

所以答案应该是50 + 45 + 40 + 35 + 30 = 200

1 个答案:

答案 0 :(得分:1)

如果没有ORDER BY,你绝不应该使用LIMIT。只有使用ORDER BY才能保证结果集中的顺序,只有LIMIT才有意义。

此外,您使用没有GROUP BY的SUM。这给你一个结果行。然后在结果上使用LIMIT,这仍然是一个结果行。

应该做的补偿是多少?你想在表格中的最后一条记录之后开始吗?这似乎没有意义。

以下是在LIMIT之后使用ORDER BY和SUM的查询:

select sum(id)
from 
(
  select id
  from test1 
  where id % 5 = 0
  order by id desc
  limit 5
) last5;