0

我需要使用LIMIT.

SELECT SUM(CRC32(column)) FROM table LIMIT 0, 100;

但是,返回的值是整个表的校验和。为什么会这样?如何使用 LIMIT 仅获取特定行数的校验和?

以下作品:

SELECT SUM(CRC32(column)) FROM table WHERE id > 0 AND id < 101;

但我不想使用这种方法,因为 auto_increment 值可能会发生跳跃。

4

2 回答 2

1

为什么会这样?

LIMIT在聚合函数之后应用。

如果不使用GROUP BYSUM则聚合整个表,只留下一条记录,该记录位于LIMIT.

用这个:

SELECT  SUM(CRC32(column))
FROM    (
        SELECT  column
        FROM    mytable
        ORDER BY
                id
        LIMIT   100
        ) q
于 2013-04-17T21:54:57.457 回答
0

你可以做

  SELECT SUM(CRC32(column)) FROM 
    (SELECT column FROM table LIMIT 0, 100) AS tmp;
于 2013-04-17T21:55:29.247 回答