Mysql 如果没有GROUP BY子句,则在没有GROUP列的情况下混合GROUP列(MIN()、MAX()、COUNT()、…)是非法的

Mysql 如果没有GROUP BY子句,则在没有GROUP列的情况下混合GROUP列(MIN()、MAX()、COUNT()、…)是非法的,mysql,sql,group-by,Mysql,Sql,Group By,我相信这曾经奏效 从team='$key中的用户中选择名字、姓氏、id、时间、分钟(timein毫秒) 我不知道在哪里或者为什么我会使用GroupBy子句。它从来都不起作用 SELECT first_name, surname, id, time, MIN(timeinmilliseconds) FROM users WHERE team = '$key' GROUP BY id, first_name, surname, time 我不知道它是否会产生您想要的结果,但它应该运行函数MIN

我相信这曾经奏效

从team='$key
中的用户中选择名字、姓氏、id、时间、分钟(timein毫秒)

我不知道在哪里或者为什么我会使用GroupBy子句。

它从来都不起作用

SELECT first_name, surname, id, time, MIN(timeinmilliseconds) 
FROM users 
WHERE team = '$key'
GROUP BY id, first_name, surname, time
我不知道它是否会产生您想要的结果,但它应该运行函数MIN()、MAX()、COUNT()、SUM()和AVG(),这些函数是sql中用于对结果集进行分组的聚合函数。 根据语法,您需要在GROUPBY子句中提及要对其应用聚合函数的列

在查询中,您使用MIN()函数查找所选列的最短时间(以毫秒为单位)。所以它应该遵循如下语法

        SELECT first_name, surname, id, time, MIN(timeinmilliseconds) 
        FROM users 
        WHERE team= '$key'
        GROUP BY first_name,surname,id,time
希望这能消除你的疑虑

SQL92和更早版本不允许查询包含select列表, “有条件”或“按列表排序”指的是 既不在GROUP BY子句中命名,也不在功能上命名 依赖于(唯一由)GROUP by列。例如 此查询在标准SQL92中是非法的,因为未聚合的名称 “选择”列表中的列不显示在“分组依据”:

对于查询 如果在SQL92中是合法的,则必须从select中省略name列 在GROUPBY子句中列出或命名

SQL99及更高版本允许根据可选功能T301进行此类非聚集 如果它们在功能上依赖于GROUP BY列:如果 名称和custid之间存在关系,查询是合法的。这 例如,如果custid是 顾客

MySQL 5.7.5及以上版本实现了功能依赖性检测。如果 仅启用了SQL模式下的“完整”组(默认情况下), MySQL拒绝选择列表、有条件或 ORDER BY list指的是未在中命名的未聚合列 GROUP BY子句在功能上也不依赖于它们。(之前 5.7.5,MySQL不检测功能依赖性,默认情况下只启用_FULL_GROUP_BY 5.7.5之前的行为,请参阅MySQL 5.6参考手册。)

当没有
groupby
时,就没有函数依赖的列。您可能希望子查询获取
min(timeinmillizes)

定义“用于工作”的值。在我看来,运行和生成不确定的结果(正如MySQL中记录的代码)并不构成正确的代码(除非这是代码的明确意图)。
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o, customers AS c
WHERE o.custid = c.custid
GROUP BY o.custid;