SQL-group by-only_full_group_by-expression xxx is not being grouped-any_value
SELECT t.user_id FROM db1.travelrecord t GROUP BY id;
修改成
SELECT any_value(t.user_id) FROM db1.travelrecord t GROUP BY id ;
注意
1、group by 后的字段不要加 any_value(),作用于select 和 orderby 上,mysql 和 orcale 都支持,应该是select、order by 中的都要加,先不考虑“互补”,select中应该不用加group中的字段和聚合方法。select 上的字段必须都加上别名,否则无法映射到实体
2、不使用select * 。
3、本身已经是没有问题的sql,
4、如果有多个可能需要加的字段,就一个个加后再验证sql
5、本身没有group by 或者聚合字段的sql不要使用any_value,条数会变成1条
补充:适用于MySQL和PgSQL的通用方案(使用min() 、max() 、子查询)
SELECT
i.ID,
max(serial_num) serial_num1,
(SELECT serial_num FROM aaaa WHERE ID = i.ID ) AS serial_num2
FROM
aaaa i
LEFT JOIN bbbb f ON i.ID = f.flag_id
WHERE i.id = 1821091610801602562
GROUP BY
i.ID
总结:
MySQL用any_value 或 min 或 子查询
PgSQL用min 或 子查询
正文到此结束