gpt4 book ai didi

php - GROUP BY 不适用于许多 MySQL 5.7,因为 5.7 使用 SQL_MODE 的 "ONLY_FULL_GROUP_BY"选项。

转载 作者:行者123 更新时间:2023-12-01 00:36:33 26 4
gpt4 key购买 nike

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

查询必须显示为

如果登录用户 ID ( $uid ) 不是 加入 group_users F.group_user_id <> '$uid'

如果登录用户 ID ( $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 每一列:

SELECT
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
INNER JOIN group_users F
ON G.group_id = F.group_oid
WHERE
G.status = '1' AND
G.group_owner_id <> '$uid' AND
F.group_user_id <> '$uid'
GROUP BY
G.group_id,
G.group_owner_id,
G.group_name,
G.group_title,
G.group_cover,
F.group_oid,
F.group_user_id
ORDER BY rand()
LIMIT 2;

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

关于php - GROUP BY 不适用于许多 MySQL 5.7,因为 5.7 使用 SQL_MODE 的 "ONLY_FULL_GROUP_BY"选项。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com