Mysql 有限制吗?

Mysql 有限制吗?,mysql,limit,rollup,Mysql,Limit,Rollup,我的一个MySQL查询有问题: SELECT id,Portfolio,Agency,Program,Objective,billion1,value11_12, Proportion1,billion,value12_13,Percentage,Difference, Diff_Percent,PIT,TOS,Actual_PIT,Actual_TOS,SUM(billion),SUM(Percentage), SUM(PIT),SUM(TOS),SUM(Actual_

我的一个MySQL查询有问题:

SELECT id,Portfolio,Agency,Program,Objective,billion1,value11_12,
    Proportion1,billion,value12_13,Percentage,Difference,
    Diff_Percent,PIT,TOS,Actual_PIT,Actual_TOS,SUM(billion),SUM(Percentage),
    SUM(PIT),SUM(TOS),SUM(Actual_PIT),SUM(Actual_TOS)
FROM budget_table
GROUP BY 'sum(Billion)'
WITH ROLLUP
LIMIT 0,100
查询可以工作,但我无法限制使用汇总。您可以在以下位置查看查询结果:

它是所有结果的总和,而不是我现在试图实现的前100个结果。我也尝试过使用LIMIT 100,但没有任何效果。我第一次尝试在MySQL中对数据库使用EXPLAIN,它说虽然我没有看到任何结果,但执行了查询,但因为我以前从未使用过它,所以我不确定要查找什么。我是编程新手,使用WAMP而不是CLI

我也不确定是从0还是1开始限制?

在GROUP BY表达式中不能使用SUM运算符,因为SUM是聚合运算符,因此在GROUP BY中没有意义

因此,您应该为GROUPBY使用id或其他字段

限制偏移参数的第二个参数从0开始,而不是从1开始

GROUP BY 'sum(Billion)'
这并不按十亿列的每个不同值分组。它通过一个值进行分组,即常量字符串文字“sumBillion”。因此,您将得到一个组,因为当您使用常量字符串文字作为分组表达式时,所有行都具有相同的值

将表达式放入GROUPBY列时,请去掉引号


然后你会发现这不是一个有效的分组表达式。

我的儿子在附近的某个地方,但我不知道他的用户名,他决定今天为我解决这个问题,并提供了以下解决方案:

//获取主要结果集 $result=mysql\u querySELECT*FROM budget\u table ORDER BY Percentage DESC LIMIT 0100

//为结果集构建一个ID数组 $ids=数组; $rows=mysql\u num\u rows$result

//获取每行的id并添加到id中

对于$i=0$i<$rows$i++$ids[]=mysql_result$result,$i,id

//将ID连接到一个字符串中,以便在中使用

$ids_str=内爆,,$ids

//仅获取上面结果集的ID的和


$result2=mysql_query从预算_表中选择Sum十亿、SUMPercentage、SUMPIT、SUMTOS、SUMActual_PIT、SUMActual_TOS,其中id在$ids_str中

限制从1开始,不是0-嗯,不,你说得对。极限1和极限1,0的含义相同。限制0不返回任何记录。我已经澄清了我的答案。谢谢谢谢大家的回答,我因个人紧急情况被叫走了,但今天终于回到这里。这个查询的基本问题是,我没有像所有其他查询一样使用变量将结果作为汇总的目标。我用的是LIMIT。谢谢Bill,我只是在尝试不同的方法,看看是否可以让查询正常工作,没有意识到不能同时使用GROUP BY和LIMIT。我认为另一个问题是聚合函数在应用限制之前执行,这就是为什么即使没有GROUP BY修饰符,它也不能工作。我认为你不理解我上面写的内容。好的,比尔。我不确定我是否理解你的解释。我在我的站点中的一些GROUP BY语句中使用了sum函数,它按预期工作。我试图解释我的查询没有按预期工作的原因是因为在执行sum函数后应用了限制。我认为它在站点上反映不好,当人们遇到合法问题时,会让新的编码人员感到沮丧这种不成熟的反应。我想我希望从堆栈溢出中得到更好的结果。当你发布你的问题和代码时,代码没有显示为代码,因此,它不是readeble。这就是我对我的通讯网的意思。真的,我怀疑这对你是否能提供帮助会有很大的影响。