group by 使用规则,doris要复用mysql 之前的业务语句。只能挨个修改业务sql?

Viewed 58

SELECT
hd.body_part,
hd.body_part_description,
hd.disease_category,
hd.disease_category_description,
COUNT( DISTINCT hd.req_id ) AS num
FROM
base_ting.detail_log hd
WHERE
AND hd.add_date >= "2024-08-01"
GROUP BY
body_part,
disease_category
通过group by body_part,disease_category 这两个字段之后,select 四个字段都固定了。还报错哈。SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = body_part_description, disease_category_description not in aggregate's output
我现在的场景doris要复用mysql 之前的业务语句。只能挨个修改业务sql?

1 Answers

MySQL 在某些情况下,尤其是使用 GROUP BY 时,如果 SELECT 字段包含未在 GROUP BY 中出现的字段,且这些字段没有被聚合函数包裹,MySQL 可能会隐式地选择某些列的值(通常是 "随机" 或 "未定义" 的值),因此查询会执行成功。而 Doris 的行为更严格,需要显式地在 GROUP BY 子句中列出所有非聚合字段,或者对其应用聚合函数。