栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在MySql中执行查询时与only_full_group_by相关的错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在MySql中执行查询时与only_full_group_by相关的错误

我只是添加

group_id
GROUP BY

当选择

SELECt
不属于的
GROUP BY
列时,组中该列可能有多个值,但结果中只有一个值的空间。因此, 通常
需要准确告知数据库如何将多个值变成一个值。通常,这是与像一个聚合函数中完成
COUNT()
SUM()
MAX()
等…我说 一般
,因为大多数其他流行的数据库系统坚持这一点。但是,在版本5.7之前的MySQL中,默认行为更为宽容,因为它不会抱怨,然后可以任意选择 任何值
!它也有一个
ANY_VALUE()
如果您确实需要与以前相同的行为,则可以将该函数用作该问题的另一个解决方案。这种灵活性要付出一定的代价,因为它是不确定性的,因此除非您有充分的理由需要它,否则我不建议您这样做。
only_full_group_by
由于种种原因,MySQL现在默认情况下会启用该设置,因此最好习惯它,并使您的查询符合它。

那么,为什么我上面的简单答案呢?我做了两个假设:

1)

group_id
是唯一的。似乎合理,毕竟它是一个“ ID”。

2)

group_name
也很独特。这可能不是一个合理的假设。如果不是这种情况,并且您有一些重复项
group_names
,然后按照我的建议添加
group_id
到中
GROUPBY
,您可能会发现现在得到的结果比以前更多,因为具有相同名称的组现在在结果中将有单独的行。对我来说,这比隐藏这些重复的组更好,因为数据库已悄悄地选择了一个值!

当涉及多个表时,最好用表名或别名来限定所有列。

SELECT   g.group_id AS 'value',   g.group_name AS 'text' FROM mod_users_groups gLEFT JOIN mod_users_data d ON g.group_id = d.group_id WHERe g.active = 1   AND g.department_id = 1   AND g.manage_work_orders = 1   AND g.group_name != 'root'   AND g.group_name != 'superuser' GROUP BY   g.group_name,   g.group_id HAVINg COUNT(d.user_id) > 0 ORDER BY g.group_name


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号