sql模式仅\u满\u组\u导致lumen 5.7出错

svdrlsy4  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(387)

我已将流明版本从5.6更新到5.7。在这个/database包v5.7.15中,默认情况下只启用mysql模式\u full\u group\u。这会导致我的一些groupby查询失败。大多数人建议在内腔禁用严格模式。我认为禁用严格模式不是一个正确的解决方案。mysql中是否有其他可用的查询?或者我需要用php构建一个逻辑?我正在使用MySQL5.6
我在用怪癖,比如

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTH, YEAR

我没有使用聚合函数。创建的数据列具有datetime数据类型

z9zf31ra

z9zf31ra1#

如果您使用mysql 5.7,您应该通过更改sql查询来补偿full\u group\u,或者您可以从mysq设置中删除full\u group\u by选项

yacmzcpb

yacmzcpb2#

对于这种查询,如果不使用需要分组依据的agregate函数,可以使用如下distinct:

SELECT DISTINCT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table

这样你就不需要禁用 full_group_by 限制
你也可以这样做:

SELECT MONTHNAME(date_created) MONTH, YEAR(date_created) YEAR 
FROM test_table 
GROUP BY MONTHNAME(date_created), YEAR(date_created)
beq87vna

beq87vna3#

此sql查询将解决以下问题: SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

相关问题