首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用limit汇总?

问是否使用limit汇总?
EN

Stack Overflow用户
提问于 2012-11-03 07:14:56
回答 3查看 948关注 0票数 1

我的一个MySQL查询遇到了问题:

代码语言:javascript
复制
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

查询可以工作,但我不能获得使用汇总的限制。您可以在BudgetAus上查看查询结果

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-11-03 07:30:29

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

因此,对于GROUP BY,您应该使用id或其他字段。

LIMIT的第二个参数(偏移量参数)从0开始,而不是1。

票数 0
EN

Stack Overflow用户

发布于 2012-11-03 08:19:22

代码语言:javascript
复制
GROUP BY 'sum(Billion)'

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

在GROUP BY列中放置表达式时,去掉引号。

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

票数 0
EN

Stack Overflow用户

发布于 2012-11-06 17:05:36

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

//获取主结果集$result = mysql_query("SELECT * FROM budget_table ORDER BY Percentage DESC LIMIT 0,100 ");

//构建结果集ids数组$ids = array();$rows = mysql_num_rows($result);

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

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

//将IN连接成一个字符串,以便与IN()一起使用

$ids_str =$ids_str( ",“,$ids);

//只获取上面结果集ids的和

$result2 = mysql_query("SELECT SUM(十亿),SUM(百分比),SUM(PIT),SUM(TOS),SUM(Actual_PIT),SUM(Actual_TOS) FROM budget_table WHERE id IN($ids_str)");

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13204320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档