S02025

错误代码

S02025

报错信息

The where clause <xxx> of a distributed query should not use any aggregate or order-sensitive function. RefId: S02025

错误原因

分布式分区表查询中不允许在 WHERE 子句中使用聚合函数或者序列函数。

SELECT SearchPhrase FROM hits WHERE min(UserID) > 0;
// The where clause [min(UserID) > 0] of a distributed/partitioned sql shouldn't use any aggregate or order-sensitive function.

解决办法

  1. 若需要对聚合结果进行过滤,可以使用 HAVING 子句。例如:
    SELECT SearchPhrase FROM hits GROUP BY SearchPhrase HAVING min(UserID) > 0;
  2. 若无需对结果进行过滤,则可以删除 WHERE 条件中对应的字段。
  3. 若表的数据量不大,可以将表取出为内存表,使用内存表进行查询。
    t = SELECT * FROM hits // 将分区表 hits 的内容取出到内存表t
    SELECT SearchPhrase FROM t WHERE min(UserID) > 0;