为了账号安全,请及时绑定邮箱和手机立即绑定

为什么列值的 SUM 返回 1?

为什么列值的 SUM 返回 1?

PHP
潇湘沐 2021-07-05 12:56:02
我正在尝试获取当月用户访问量的总和。这是我的代码(如果重要的话,我使用 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=1MFt-FtEtqkk7QWQC2oAtMBA0WAgOIV4hPS此外,当我尝试仅获取具有我需要的列最大值的行的值时,如下所示:$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。但是后来我只得到了第一行,但不仅仅是实际最大值._。我不知道我做错了什么
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

在 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)。


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 229 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信