最近在测试tdengine,发现有类SQL不支持
例如
select a,b from t1 group by a;
按照正常的语法规则,select 当中的列必须在group by 里面出现,但是mysql和tidb的语法规则sql_mode 参数可以把only_full_group_by 去掉以后就可以跑,tdengine 有这样的机制吗
最近在测试tdengine,发现有类SQL不支持
例如
select a,b from t1 group by a;
按照正常的语法规则,select 当中的列必须在group by 里面出现,但是mysql和tidb的语法规则sql_mode 参数可以把only_full_group_by 去掉以后就可以跑,tdengine 有这样的机制吗
没有太明白您的意思。请给出希望的 SQL 语句看看。
比如正常的sql 语句是这样,select 当中的列要在group by 中出现
SELECT user_id
FROM test_order
GROUP BY user_id;
但是通过设置mysql/tidb的sql_mode 把only_full_group_by 去了,
SELECT user_id,其他的字段
FROM test_order
GROUP BY user_id;
tdengine 允许这样的sql 写法嘛
首先解释一下:
在 MySQL 中,ONLY_FULL_GROUP_BY 是一种 SQL 模式(从 MySQL 5.7 版本开始默认开启)。
它的主要作用是严格校验 GROUP BY 语句的规范性:要求 SELECT 列表中的每一列,要么包含在 GROUP BY 子句中,要么必须使用聚合函数(如 COUNT()、SUM()、MAX() 等)进行处理。
其次我比较好奇,你要这样做的目的是?
其实没什么目的,就是公司的业务,就是去掉了only_full_group_by ,如果tdengine的语法规则 不支持select 当中的列可以不在group by 中出现的话,我们业务就要改造
对的。TDengine 支持的 sql 也是这样的,就是 列 必须在 group by中,如果是普通列,就必须是聚合函数进行处理的。
没有参数可以控制这样的行为吗
不需要参数,因为只有支持这一种方式。
好的,那我们业务需要做控制