在MySQL中无法将GROUP BY与join查询一起使用
我需要执行以下查询,但无法执行在MySQL中无法将GROUP BY与join查询一起使用,mysql,group-by,sql-mode,Mysql,Group By,Sql Mode,我需要执行以下查询,但无法执行 SELECT * FROM (SELECT * FROM rider_status order by created_date DESC) as riderActice INNER JOIN rider_user ON rider_userId = rider_user.id Where rider_user.isActive = 1 AND online_status = 1 GROUP by rider_userId 错
SELECT *
FROM (SELECT *
FROM rider_status
order by created_date DESC) as riderActice
INNER JOIN rider_user ON rider_userId = rider_user.id
Where rider_user.isActive = 1
AND online_status = 1
GROUP by rider_userId
错误:1055-SELECT列表的表达式1不在GROUP BY子句中,并且包含未聚合的列“riderActice.id”,该列在功能上不依赖于GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容
我读了一些博客,找到了下面的解决方案
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
但执行上述解决方案时,我遇到了另一个问题,即
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
如果我遗漏了什么或做错了,请告诉我您不能选择表中的所有*表示所有列,并按一列分组。这就是为什么会出现错误。如果列位于select子句中,并且它不是聚合函数的一部分,那么它必须位于group by子句中 另外,在连接两个表SubQuery和一个表时,请使用您创建的别名RiderAction 下面是一个小演示,演示我答案的第一部分。 如果要选择所有列,请执行以下操作:
SELECT riderActice.rider_userId
, riderActice.created_date
, rider_user.id
, rider_user.isActive
, rider_user.online_status
FROM rider_status as riderActice
INNER JOIN rider_user ON riderActice.rider_userId = rider_user.id
WHERE rider_user.isActive = 1
AND rider_user.online_status = 1
GROUP BY riderActice.rider_userId
, riderActice.created_date
, rider_user.id
, rider_user.isActive
, rider_user.online_status
如果您不想按每一列进行分组,请向我们解释您需要什么,但这就是您问题的答案 向我们显示错误消息您向我们显示的错误消息意味着查询甚至没有发送到MySQL,这不是MySQL错误消息。所以不要试图改变MySQL端的某些东西——这毫无意义。或者您可能使用了一些错误的方法来获取错误消息-修复它。为什么您需要一个分组依据?您没有使用任何聚合函数。@Akina那么如何在中使用group byMySQL@sofquestion9在将查询发送到MySQL服务器的问题解决之前,我认为没有任何理由担心GROUPBY的任何问题。为什么我不能?这是完美的工作在我的一个主机。我已经将我的数据库移到了其他位置,在此之后,我开始显示这个问题。我无法在我的MySQL中使用简单的GroupBy。我不知道您以前使用过什么以及如何使用,但这是事实。我将添加一个小的演示,这样你可以看到自己。。。另外,请更新问题中的错误。主要部分缺失。还有一件事@sofquestion9,请检查:我相信这很重要。还有其他方法吗?因为在迁移服务器时,我无法更改这么多查询。