2013-04-17 37 views
0

我需要使用LIMIT来获取特定列和特定行数的校验和。SELECT SUM(CRC32(列))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的价值潜力跳跃的这种方法。

+0

等一下,你想在这里做什么?将CRC32值加在一起没有任何意义。 – duskwuff

+0

即时验证2个表格 – user2103849

回答

1

为什么会发生这种情况?

LIMIT在集合函数之后被应用。

当在没有GROUP BY,SUM的情况下使用时,整个表格只会留下一条记录,其中包含LIMIT

使用此:

SELECT SUM(CRC32(column)) 
FROM (
     SELECT column 
     FROM mytable 
     ORDER BY 
       id 
     LIMIT 100 
     ) q 
0

你可以做

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