Mysql 在此查询中,我应该使用什么来替换GROUP BY?
我有一个小问题,我想在这里用pid来代替这个组,但我不知道该用什么。。这是我的问题Mysql 在此查询中,我应该使用什么来替换GROUP BY?,mysql,sql,group-by,Mysql,Sql,Group By,我有一个小问题,我想在这里用pid来代替这个组,但我不知道该用什么。。这是我的问题 SELECT `s`.`name` `server_name`, `g`.`name` `group_name`, `a`.`pid` `pid` FROM `panel_admins` `a` LEFT JOIN `panel_players` `p` ON `a`.`pid` = `p`.`id` LEFT
SELECT `s`.`name` `server_name`,
`g`.`name` `group_name`,
`a`.`pid` `pid`
FROM `panel_admins` `a`
LEFT JOIN `panel_players` `p`
ON `a`.`pid` = `p`.`id`
LEFT JOIN `panel_admin_groups` `g`
ON `a`.`gid` = `g`.`id`
LEFT JOIN (SELECT `username`,
`pid`
FROM `panel_players_username`
GROUP BY `pid`
ORDER BY `last_used` DESC) `u`
ON `a`.`pid` = `u`.`pid`
LEFT JOIN `panel_servers` `s`
ON `a`.`sid` = `s`.`id`
WHERE ( Timestampdiff(minute, add_time, Now()) < `g`.`usetime`
OR `g`.`usetime` = 0 )
ORDER BY `immunity` DESC;
在panel_玩家中:
id(that corresponds to pid) steamid country
----------------------------------------------------
168 steamidhere EN
在面板中\u玩家\u用户名:
pid username connections last_used
----------------------------------------------------
168 peter 21 2018-08-13 17:50:26
以及在panel_服务器中:
id(that corresponds to sid) name ip port rcon_pw
--------------------------------------------------------------------------
10 surfcombat IPHERE PORTHERE RCONHERE
11 jailbreak IPHERE PORTHERE RCONHERE
12 executes IPHERE PORTHERE RCONHERE
我想在此查询中替换GROUP BY,因为我的web主机不允许我使用GROUP BY子句;这与sql\u mode=only\u full\u group\u by不兼容
我已经尝试禁用它,但我使用付费网络主机与
CPanel和我需要更多权限来激活它
在旧版本的上未指定聚合查询时的默认行为是,对于任何未分组和未聚合的列,该查询将位于组内。这通常不太理想,但因为它起作用了,许多mysql开发人员从未停止过思考: 此外,添加ORDERBY子句不会影响从每个组中选择值 现在,它希望你说得具体一点。例如
SELECT MIN(`username`),
`pid`
FROM `panel_players_username`
GROUP BY `pid`
我们现在被迫告诉mysql为未分组的列选择哪个值。在这里,我选择了MIN。当然,MAX可能是对的,甚至是别的什么。但至少现在,您必须考虑您的数据,如果有多个用户名与一个pid关联,那么您实际上想对此做些什么
请不要尝试禁用sql\u mode=only\u full\u group\u by。它可以避免您忽视数据问题。您能提供一些简单的数据并期望结果吗?group by没有任何意义,因为您没有使用任何聚合函数。我们有一个查询,显然不符合您的要求,并请求替换group by。但我们不知道你想做什么。请回答您的问题,并添加一些解释,以及D-Shih提到的样本数据和预期结果。使其易于帮助您:。。。从面板中选择用户名,pid根据上次使用的描述限制1的用户名顺序…添加了一些信息。在这部分中,我不断收到消息以禁用sql\u mode=仅\u full\u组_by@Peter-那么您在select子句中用MIN包装了username,如我上面所示?我刚刚注意到ORDER BY,这在这里通常是没有意义的,所以删除tooWell,它不会给我错误,但它不会给我输出wanted@Peter-由于您的示例数据在panel_players_username中仅包含一行,因此很难知道您想要什么。请注意,我已经突出显示/引用了文档中指出在较旧的mysql版本下,ORDER BY子句不控制在每个组中选择哪个用户名值的部分,因此,如果您习惯于编写这样的代码并期望受到这样的影响,这是不安全的。@Peter-我刚刚重新阅读了您的查询。在此查询之外,它不使用用户名。现在我真的被你想在这里做什么难倒了。
SELECT MIN(`username`),
`pid`
FROM `panel_players_username`
GROUP BY `pid`