我有表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
答案 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;