Php Group by Query不能在严格的纯SQL模式下工作
我有一个GROUPBY查询,它在PHP PDO中运行良好,但是当我在mysql ini中添加“sql_mode=ONLY_FULL_group_by”时,同一个查询失败并出现错误 SQLSTATE[42000]:语法错误或访问冲突:1055“db.table.t_date”不在GROUP BY中 实际查询Php Group by Query不能在严格的纯SQL模式下工作,php,mysql,sql,pdo,mysql-error-1055,Php,Mysql,Sql,Pdo,Mysql Error 1055,我有一个GROUPBY查询,它在PHP PDO中运行良好,但是当我在mysql ini中添加“sql_mode=ONLY_FULL_group_by”时,同一个查询失败并出现错误 SQLSTATE[42000]:语法错误或访问冲突:1055“db.table.t_date”不在GROUP BY中 实际查询 SELECT * FROM ( SELECT DATE_FORMAT(t_date, '%b') AS mon, DATE_FORMA
SELECT
*
FROM
(
SELECT
DATE_FORMAT(t_date, '%b') AS mon,
DATE_FORMAT(t_date, '%Y-%m') AS fy_date,
(SUM(val1) - SUM(val2)) AS net_val
FROM
TABLE
GROUP BY
YEAR(t_date),
MONTH(t_date)
ORDER BY
DATE_FORMAT(t_date, '%Y-%m') DESC
LIMIT 12
) AS tbl
ORDER BY
fy_date
有人能告诉我为什么上面的查询无法使用吗
sql_mode = ONLY_FULL_GROUP_BY
您需要将两个
date\u格式
表达式添加到groupby
中,因为所有非聚合列都需要分组
SELECT
DATE_FORMAT(t_date, '%b') AS mon,
DATE_FORMAT(t_date, '%Y-%m') AS fy_date,
(SUM(val1) - SUM(val2)) AS net_val
FROM
TABLE
GROUP BY
DATE_FORMAT(t_date, '%b'),
DATE_FORMAT(t_date, '%Y-%m')
ORDER BY
DATE_FORMAT(t_date, '%Y-%m') DESC
没有尝试过这一点,但是在子查询中将
DATE\u格式(t\u DATE,'%b')
添加到groupby
可以解决问题吗?没有,没有起作用:按年分组(t\u DATE)、按月分组(t\u DATE)、按日期分组(t\u DATE,'%b')。如果我没有弄错的话,您需要将DATE\u格式
表达式添加到组中:groupby DATE\u格式(t_date,'%b')、date_格式(t_date,'%Y-%m')
因为所有非聚合列都需要分组。感谢“无名马”,您可以添加您的评论作为答案。我尝试了以下分组,按年(t_date)、月(t_date)、日期(t_date,'%b')、日期(t_date,'%Y-%m'))现在我在严格模式下没有收到任何语法错误。谢谢@a_horse_和_no_name。上面的查询非常有效。