mysql 列变行.
注意when后多个满足条件时, 会只取一个, 不会报错.
select max(case when then)
mysql中的变量@var在mybatis xml中使用
必须在数据库配置文件的数据库地址url中加上一个属性allowMultiQueries=true
参考: MySQL设置变量以及如何在Mybatis中使用
Java Stream peek vs. map
两个函数的返回值都是一个新的Stream,但是接收类型 peek是Consumer,map是Function
使用场景:
对象数组的集合流, peek 为遍历数组, 对item进行处理; map为获取出某个属性或对整个item进行处理后返回
参考:
Java Stream peek vs. map
Java 8 Stream Api 中的 peek 操作
mysql insert select 表
mysql insert t1(v1, v2, v3) select v1, v2, v3 from t2
中间不要value 或 values
MySQL FIELD() 函数的用法
FIELD(str,str1,str2,str3,...)
1. 与order by 组合使用, 让字段按照后续字典表中的内容排序
select * from demo order by field(review_status, 2, 3, 1)
, 其中review_status
为字段名
field()
后可以跟desc
与asc
asc
(默认): 按照表顺序(231), 且不存在231中的数据排在前面, 231的数据在最后desc
: 按照表降序(132), 且不存在132中的数据排在后面, 132的数据在最前面
2. 单独使用, 求出第一个值在后列表中的位置(从1开始)
- 第一个值是数字或字符串:
select field(1, 1, 2, 3, 4, 5) res
结果是1 - 第一个值是语句:
select field((select id from (SELECT * FROM demo where id = 1) tt), 4, 1, 2, 1, 3) res
结果是2(后面多个1是取第一个的索引) - 后面存在语句
select field(1, (select id from (SELECT * FROM demo where id in (1, 2, 3)) tt)) res
运行报错Subquery returns more than 1 row
, 表示子查询返回多列, 如果其他地方遇到这种情况需要使用limit 1
或关键词any
或some
等等 - 补充: 当后面列表中不存在第一个值 或 第一个值为null时 返回0