PhpStorm 2021.3 Help

代码检查:与聚合相关的问题

报告 SQL 聚合函数的无效使用。

考虑以下情况:
  • 在 HAVING 和 ORDER BY 子句中使用但在 GROUP BY 子句中丢失的列。

    CREATE TABLE foo(id INT PRIMARY KEY, a INT, b INT); 选择 a, MAX(b) 从 foo GROUP BY a HAVING b > 0; SELECT * FROM foo GROUP BY a ORDER BY;

    当通过主键进行分组时,此规则不适用。

    SELECT * FROM foo GROUP BY id ORDER BY;
  • 在错误的上下文中聚合函数。通常,您可以在以下上下文中使用聚合函数: SELECT 中的表达式列表;在 HAVING 和 ORDER BY 部分;和其他特定方言的情况。以下查询将显示错误。

    从 foo 中选择一个 MAX(b) > 0; 从 foo GROUP BY MAX(a) 中选择一个;
  • 聚合函数的嵌套调用。

    从 foo 组中选择 MAX(SUM(a));

    此规则不适用于分析函数。以下查询有效且正确。

    从 foo 中选择 MAX(SUM(a) OVER ());
  • 没有聚合函数的 HAVING 的用法。在这种情况下,请考虑使用 WHERE 部分重写您的代码。

    通过 a > 0 从 foo 组中选择 a, MAX(b);

禁止编辑器中的检查

  1. 将插入符号放在突出显示的行上,然后按Alt+Enter或单击意图操作图标

  2. 单击要抑制的检查旁边的箭头,然后选择必要的抑制操作。

最后修改:2022 年 2 月 11 日