MySQL中的any_value()函数
有如下数据:
mysql> select * from area;
+----+----------------+----------------+-----------+-----------+
| id | proviance_code | proviance_name | city_code | city_name |
+----+----------------+----------------+-----------+-----------+
| 1 | 1 | 河南 | 1 | 商丘 |
| 2 | 1 | 河南 | 2 | 南阳 |
| 3 | 1 | 河南 | 3 | 开封 |
| 7 | 2 | 杭州 | 1 | 余杭区 |
| 8 | 2 | 杭州 | 2 | 拱墅区 |
| 9 | 2 | 杭州 | 3 | 下城区 |
+----+----------------+----------------+-----------+-----------+
6 rows in set (0.00 sec)
要求查询所有的省份
方案1
SELECT DISTINCT(proviance_code),proviance_name from area;
方案2
SELECT proviance_code,any_value(proviance_name) from area GROUP BY proviance_code;
mysql5.7以及之前还可以用以下sql:
SELECT proviance_code,proviance_name from area GROUP BY proviance_code;
但是mysql5.7之后会报错:
SELECT proviance_code,proviance_name from area GROUP BY proviance_code
> 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'area.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
> 时间: 0.016s
原因:MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,简单的说来,在此模式下,target list中的值要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于group by list中的表达式的值。
any_value:MySQL提供了any_value()函数来抑制ONLY_FULL_GROUP_BY值被拒绝,any_value()会选择被分到同一组的数据里第一条数据的指定列值作为返回数据。
评论区
请写下您的评论...
猜你喜欢
blog
sql中常用的数学函数
数据库基础
2830
sql中常用的数学函数
ofc
c / c++中的函数指针
weblog
2492
一个案例说明#includeiostreamusingnamespacestd;/**定义函数指针*///typedef声明为一个指针函数类型MethodPointer//int为指针指向函数的返回
blog
mysql yearweek函数
数据库
1027
语法:YEARWEEK(date)或YEARWEEK(date,firstdayofweek)参数值date:需要。从中提取年和周数的日期或日期时间值firstdayofweek:可选,指定星期几
前端,javascript
1625
比较点
普通函数
箭头函数
简写
箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。
this指向
this总是指向调用它的对象,如果作为构造函数
ofc
mysql 字符串函数总结
weblog
1979
SelectORD(‘a’)-:973.CONV(N,from_base,to_base)对数字n进制转换,并转换为字串返回,N是要转换的数据,from_base是原进制,to_base是目标进制。selectCO
blog
mysql替换字符串函数replace
数据库基础
2243
'%from_str%'说明:table_name——表的名字field_name——字段名from_str——需要替换的字符串to_str——替换成的字符串
ofc
mysql整数类型的范围
weblog
1238
mysql整数类型的范围MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中,整数类型包括:TINYINT、SMALLINT、MEDIUMINT、INT和
数据库基础
3891
产生原因:数据库时区不一致解决办法:在数据库中链接中加:&serverTimezone=Asia/Shanghaiurl:jdbc:mysql://localhost:3306/test
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。