Mysql 在此查询中,我应该使用什么来替换GROUP BY?

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

我有一个小问题,我想在这里用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 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`