当前位置: 首页 > news >正文

殡葬网站建设盗墓笔记wordpress小说主题

殡葬网站建设,盗墓笔记wordpress小说主题,h5制作软件 知乎 推荐,wordpress自带搜索引擎在我们使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_modeonly_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情,如:LIMIT 0, 1000 Error…

在我们使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情,如:

 LIMIT 0, 1000 Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.tab_test.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.063 sec

由于本地安装得mysql版本未报错,但是服务器上的版本报错:

本机版本:

服务器版本:

不知道是8.x哪个版本之后SQL_MODE解除了限制,还是安装与解压版的的区别,目前发现的问题是服务器解压版应该是ini未设置SQL_MODE模式。

出现这样的报错,并不是因为你的代码写得不好,而是因为在MySQL 5.7后,MySQL默认开启了SQL_MODE严格模式,对数据进行严格校验。如果代码中含有group by聚合操作,那么select中的列,除了使用聚合函数之外的,如max()、min()等,都必须出现在group by中。

比如说,出现下面这种情况,就会报错:

select id,aa from tab_test group by aa

如果改成这个样子:

select id,aa from tab_test group by id,aa

或者这个样子:

select aa from tab_test group by aa

就不会报错了。

当然,这样子随意的改动代码,我们可能就无法得到想要的信息了。

我们可以通过以下四种方法,解决该问题:

方法一:直接修改数据库配置

首先,打开数据库,输入

select @@global.sql_mode;

这个时候,就会返回得到以下的信息:(不同电脑返回的信息可能不同)

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

如果里面包含 ONLY_FULL_GROUP_BY,那么就重新设置,在数据库中输入以下代码,去掉ONLY_FULL_GROUP_BY即可:

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

但是,当我们再一次重新启动数据库时,可能会恢复原样,还是会出现ONLY_FULL_GROUP_BY的报错,这就需要我们再一次修改数据库配置。

那有没有可以永久生效的办法呢?当然有!参考方法二,就可以使修改数据库配置永久生效!

方法二:修改数据库配置(永久生效)

修改配置文件my.ini

在[mysqld]模块下新增一行配置:

sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

运行后重启,即可生效

方法三:使用 any_value() 或 group_concat()

1. any_value():将分到同一组的数据里第一条数据的指定列值作为返回数据。 (any_value()函数就是MySQL提供的用来抑制ONLY_FULL_GROUP_BY值被拒绝的)

select a,any_value(b) from test group by a

2. group_concat():将分到同一组的数据默认用逗号隔开作为返回数据,如下图:

方法四:开动脑筋,修改代码

举个例子,在牛客的第206题中,就出现了类似的情况

SQL206 获取每个部门中当前员工薪水最高的相关信息

题目如下:

示例:

如果我们不用上面的方法,直接用下面这种方式查询,很明显会出现 ONLY_FULL_GROUP_BY 的报错:

select dept_no,d.emp_no,max(s.salary) 
from dept_emp d 
join salaries s on d.emp_no = s.emp_no
group by d.dept_no

我们可以换一种思路:首先查询得到2张表,一张表为员工薪资表 表a,一张表为每个部门最高员工薪资表 表b。然后通过表连接 on d.emp_no = s.emp_no 使这两张表结合,通过on a.salary = b.salary使薪资统一,即这两张表连接后的表的薪资为每个部门的最高员工薪资。最后,再通过一次查询得到每个部门中当前员工薪水最高的相关信息。

select a.dept_no, a.emp_no, b.salary
from(select d.dept_no, s.emp_no, s.salaryfrom dept_emp as d join salaries as s on d.emp_no = s.emp_no ) as ajoin(select d.dept_no, max(s.salary) as salaryfrom dept_emp as d join salaries as s on d.emp_no = s.emp_nogroup by d.dept_no) as b on a.salary = b.salary and a.dept_no = b.dept_no
order by a.dept_no

希望本篇文章对你有帮助。

http://www.yayakq.cn/news/978934/

相关文章:

  • 做中东服装有什么网站企业网站建设600元
  • 电子商务网站业务流程分析网站建设方案项目书
  • 有动态图片的网站源码网站开发技术项目式教程
  • 网站右侧广告代码详情页制作
  • 培训网站模板免费做视频网站 视频放在哪里找
  • 成都网站建设技术如何创建一个公司网站
  • 网站多大够用wordpress 七牛缩略图
  • 手机网站建设价位西安便民信息发布平台
  • 个人网站规划书模板上海高端品牌网站制作
  • 常见网站图标签名在线生成器
  • 合肥网站建设程序门户网站系统设计
  • 购物网站建设公建筑模板价格规格大全
  • 好玩的网站源码官方网站搭建要多少钱
  • 怎样创建购物网站做网站的变成语言哪类最简单
  • 建设规划展览馆网站的优势网站优化意义
  • 南京自适应网站wordpress企业授权
  • 郑州网站建设企业安全的网站建设公司
  • 苏州网站建设设计制作公司怎么样建设网站项目的目的是什么
  • 跨境电商自建站是什么wordpress 分类目录置顶
  • 企业官方网站认证黄山seo公司
  • 外贸wordpress主题seo外链发布软件
  • 分类信息网站营销潮州seo
  • 有什么可以做cad赚钱的网站宝塔wordpress
  • 新乡做网站的多吗徐州市鼓楼区建设局网站
  • 做网站赚钱的时代过去了吗seo在线培训机构
  • fms 视频网站建设中国八冶建设集团网站
  • 昔阳做网站公司个人介绍网页模板免费下载
  • 清廉桂林网站百度关键词优化服务
  • 仙桃网站网站建设wordpress分辨率
  • 已备案网站新增接入双滦网站建设