# 问题
业务要求:查询所有省份:
# 方法
distinct 排除重复
1
2
3
4
5SELECT
DISTINCT(province_code),
province_name
FROM
t_mip_base_areagroup by 根据身份编码分组
1
2
3
4
5SELECT
province_code,
any_value(province_name)
FROM t_mip_base_area
GROUP BY province_code
# 若这样写
1 | SELECT |
则会报错

# 总结:
MySQL5.7 之后,sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。
ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义,简单的说来,在此模式下,target list 中的值要么是来自于聚合函数(sum、avg、max 等)的结果,要么是来自于 group by list 中的表达式的值
MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝
any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据