GROUP BY不适用于MySQL 5.7,因为5.7使用SQL_MODE的“ONLY_FULL_GROUP_BY”选项。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GROUP BY不适用于MySQL 5.7,因为5.7使用SQL_MODE的“ONLY_FULL_GROUP_BY”选项。相关的知识,希望对你有一定的参考价值。

我想显示组,当用户打开页面时应该随机化并显示两个组。因此,下面的查询工作正常,但GROUP BY不适用于mysql 5.7,因为5.7使用SQL_MODE的“ONLY_FULL_GROUP_BY”选项。除了"GROUP BY",您还可以建议其他任何查询格式吗?

查询必须显示为

如果登录用户ID(qazxsw poi)未加入群组用户qazxsw poi

如果在用户ID($uid)中,则不是组所有者(组创建者)组F.group_user_id <> '$uid'

$uid

G.group_owner_id <> '$uid'

答案

鉴于您已经使用$query = mysqli_query($this->db,"SELECT DISTINCT G.group_id, G.group_owner_id, G.group_name, G.group_title, G.group_cover, F.group_oid, F.group_user_id FROM groups G, group_users F WHERE G.status ='1' AND G.group_id = F.group_oid AND G.group_owner_id <> '$uid' AND F.group_user_id <> '$uid' GROUP BY G.group_id ORDER BY rand() LIMIT 2 ") or die(mysqli_error($this->db)); ,这意味着您甚至不需要使用enter image description here。只需删除它,错误就会消失。如果你想使用SELECT DISINCT模拟GROUP BY会产生的效果,那么你可以简单地GROUP BY每列:

DISTINCT

请注意,如果您还要选择某些列的聚合,我们还有更多工作要做。然后,最有可能的是,我们最终会引入一个或多个子查询来解决您面临的GROUP BY问题。

以上是关于GROUP BY不适用于MySQL 5.7,因为5.7使用SQL_MODE的“ONLY_FULL_GROUP_BY”选项。的主要内容,如果未能解决你的问题,请参考以下文章

简单的 MySQL 5.7 only_full_group_by 计数

MySQL 5.7默认ONLY_FULL_GROUP_BY语义介绍

GROUP BY 和 mysql 5.7 [重复]

MySQL 5.7默认ONLY_FULL_GROUP_BY语义介绍

MySQL 5.7默认ONLY_FULL_GROUP_BY语义介绍

mysql 8.0 上的“group by desc”语法错误,在 5.7 上很好