为什么列值的SUM返回1?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (5)

我试图获得当前用户访问量的总和。这是我的代码(如果重要的是,我使用ORM RedBeanPHP):

$summ = R::exec('SELECT SUM(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

$ summ总是1,即使它不是真的。._。我的表统计信息:https//drive.google.com/open?id = 1MMt-FtEtqkk7QWQC2oAtMBA0WAgOIV4h

PS此外,当我尝试只获取具有我需要的列的最大值的行的值时,如下所示:

$summ = R::exec('SELECT MAX(amount),value FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

我遇到错误:“语法错误或访问冲突:1140在没有GROUP BY的聚合查询中,SELECT列表的表达式#2包含非聚合列'somesite.statistic.value';这与sql_mode = only_full_group_by不兼容”我说好了,尝试添加GROUP BY ID。但后来我只获得第一行,但不仅仅是最大值._。我不知道我做错了什么

提问于
用户回答回答于

在RedBeanPHP中,您必须使用除R :: exec之外的其他函数来进行SELECT查询。您获得的数字可能是select返回的行数或表示成功的简单值。

尝试

$summ = (int)R::getCell('SELECT SUM(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month',[':month'=>date('m')]);

对于第二个问题,您可能想要研究一下SQL,至少是基础知识。像这样的嵌套查询可能对你有用。

SELECT value FROM statistic WHERE amount = (SELECT MAX(amount) FROM statistic WHERE type = "usuall_visit" AND month = :month') LIMIT 1

您需要再次使用它与R :: getCell(如果您想要检索多个列,则需要使用R :: getRow)。

扫码关注云+社区

领取腾讯云代金券