#### # 问题

业务要求：查询所有省份：

#### # 方法

1. distinct 排除重复

       1
       2
       3
       4
       5

       SELECT
       	DISTINCT(province_code),
       	province_name
       FROM
       	t_mip_base_area

2. group by 根据身份编码分组

       1
       2
       3
       4
       5

       SELECT
       	province_code,
       	any_value(province_name)
       FROM t_mip_base_area
       GROUP BY province_code

###### # 若这样写

    1
    2
    3
    4
    5

    SELECT
        province_code,
        province_name
    FROM t_mip_base_area
    GROUP BY province_code

则会报错

#### # 总结：

1. MySQL5.7 之后，sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。

2. ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义，简单的说来，在此模式下，target list 中的值要么是来自于聚合函数（sum、avg、max 等）的结果，要么是来自于 group by list 中的表达式的值

3. MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝

4. any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据

mysql