mysql - mysql中按年、月分组时出错

标签 mysql group-by

我有这段代码,它在在线服务器上运行正常:

SELECT
DATE(`order`.`date`) AS `dater`,
COUNT(*) AS `orders-amount`,
SUM(`order`.`price`) AS `orders-income`,
(SELECT SUM(`amount`) FROM `paypal` WHERE `paypal`.`txn_id` != 'Bonus' AND YEAR(`dater`) = YEAR(`paypal`.`posted_date`) AND MONTH(`dater`) = MONTH(`paypal`.`posted_date`)) AS `total_charge`
FROM `order`
GROUP BY YEAR(`dater`), MONTH(`dater`)
ORDER BY `dater` DESC

但是在本地主机上它给出如下错误:

#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'panel.order.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

如果我使用此代码进行分组然后它可以正常工作:

GROUP BY `dater`

此错误仅出现在本地主机上,因为我在 linux Mint 上运行并安装了 apache、php、mysql 和 pypmyadmin

最佳答案

意思是在本地和远程服务器上使用不同的sql模式。 您应该更改模式或更新您的查询,例如:

SELECT
YEAR(ANY_VALUE(`order`.`date`)) date_year,
MONTH(ANY_VALUE(`order`.`date`)) date_month,
COUNT(*) AS `orders-amount`,
SUM(`order`.`price`) AS `orders-income`,
(SELECT SUM(`amount`) FROM `paypal` WHERE `paypal`.`txn_id` != 'Bonus' AND YEAR(ANY_VALUE(`order`.`date`)) = YEAR(`paypal`.`posted_date`) AND MONTH(ANY_VALUE(`order`.`date`)) = MONTH(`paypal`.`posted_date`)) AS `total_charge`
FROM `order`
GROUP BY date_year, date_month

关于mysql - mysql中按年、月分组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185829/

相关文章:

Python 3.4 - Pandas - 帮助正确排列数据框列和删除无效列

php - 无法连接到网站中的数据库

python - 计数为零时的 pandas groupby 以及如何在结果中包含零值

mysql - JOIN 表可能没有记录的复杂 JOIN 查询

c# - 元数据异常 : Schema specified is not valid

MYSQL GROUP BY 和 WHERE 索引,带有时间戳列

sql - SUM 值按列分组但不 'aggregate' 可能吗?

mysql - 如何在mysql中根据2个日期选择记录

Java MYSQL 准备语句错误 : Check syntax to use near '?' at line 1

mysql - 选择具有用户自己的时间范围的行