Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL计数(*)在PostgreSQL中不起作用,但在MySQL中起作用_Mysql_Sql_Database_Postgresql_Group By - Fatal编程技术网

SQL计数(*)在PostgreSQL中不起作用,但在MySQL中起作用

SQL计数(*)在PostgreSQL中不起作用,但在MySQL中起作用,mysql,sql,database,postgresql,group-by,Mysql,Sql,Database,Postgresql,Group By,我不知道为什么下面的查询在MySQL中工作得很好,但在PostgreSQL中却不行 SELECT MAX(Anzahl) max_cnt, PID FROM ( SELECT COUNT(*) Anzahl, PID, postID FROM PersonLikesPost GROUP BY (postID) ORDER BY Anzahl DESC) as d PostgreSQL说,我需要GROUPBY子句中的PID。但是我得到了另一个结果 关于。这在mysql中是可能的,因为 MyS

我不知道为什么下面的查询在MySQL中工作得很好,但在PostgreSQL中却不行

SELECT MAX(Anzahl) max_cnt, PID
FROM (
SELECT COUNT(*) Anzahl, PID, postID 
FROM PersonLikesPost
GROUP BY (postID) 
ORDER BY Anzahl DESC) as d
PostgreSQL说,我需要GROUPBY子句中的PID。但是我得到了另一个结果


关于。

这在mysql中是可能的,因为

MySQL扩展了GROUPBY的标准SQL用法,以便 列表可以引用组中未命名的未聚合列 条款这意味着前面的查询在MySQL中是合法的。你可以 使用此功能可以避免不必要的错误,从而获得更好的性能 列排序和分组。但是,这主要在以下情况下有用: 在GROUP BY中未命名的每个未聚合列中的所有值都是 每组相同。服务器可以从中自由选择任何值 每个组,因此,除非它们相同,否则选择的值是 不确定的此外,还需要从每组中选择值 不能受添加ORDER by子句的影响。结果集排序 在选择值后发生,并且“排序依据”不影响 服务器选择的每个组中的哪些值

请查看此链接中的文档

其他DBMS可能不会扩展GROUPBY的标准SQL用法,因此其他DBMS中的select列表只能引用聚合列

即 在其他数据库管理系统中,此查询

SELECT COUNT(*) Anzahl, PID, postID 
FROM PersonLikesPost
GROUP BY (postID) 
必须翻译成这样

SELECT COUNT(*) Anzahl, PID, postID 
    FROM PersonLikesPost
    GROUP BY Anzahl, PID, postID

希望这有帮助

这在mysql中是可能的,因为

MySQL扩展了GROUPBY的标准SQL用法,以便 列表可以引用组中未命名的未聚合列 条款这意味着前面的查询在MySQL中是合法的。你可以 使用此功能可以避免不必要的错误,从而获得更好的性能 列排序和分组。但是,这主要在以下情况下有用: 在GROUP BY中未命名的每个未聚合列中的所有值都是 每组相同。服务器可以从中自由选择任何值 每个组,因此,除非它们相同,否则选择的值是 不确定的此外,还需要从每组中选择值 不能受添加ORDER by子句的影响。结果集排序 在选择值后发生,并且“排序依据”不影响 服务器选择的每个组中的哪些值

请查看此链接中的文档

其他DBMS可能不会扩展GROUPBY的标准SQL用法,因此其他DBMS中的select列表只能引用聚合列

即 在其他数据库管理系统中,此查询

SELECT COUNT(*) Anzahl, PID, postID 
FROM PersonLikesPost
GROUP BY (postID) 
必须翻译成这样

SELECT COUNT(*) Anzahl, PID, postID 
    FROM PersonLikesPost
    GROUP BY Anzahl, PID, postID

希望这有帮助

它在MySQL中工作,因为默认情况下,它允许请求不一致的结果。修复查询,它将在任何一个DBMS中工作。它在MySQL中工作,因为默认情况下,它允许请求不一致的结果。修复查询后,它将在任何一个DBMS中工作。此查询也不工作。现在PostgreSQL说:错误:GROUPBY中不允许使用聚合函数。此查询也不起作用。现在PostgreSQL说:错误:GROUPBY中不允许使用聚合函数。