常用或不常用的sql语句
批量插入
<insert id="addGoods" parameterType="map">
insert into odr_order_goods(version, deleted, createdBy, creator, createTime)
values
<foreach collection="goodsList" item="item" index="index" separator=",">
(
0,0,#{
item.createdBy},#{
item.creator},#{
item.createTime}
)
</foreach>
</insert>
批量查询
where a.XX in
<foreach collection="id" index="index" item="item" open="(" separator="," close=")">
#{
item}
</foreach>
插入数据后返回记录id
<insert id="insertMerchant" parameterType="Merchant" useGeneratedKeys="true" keyProperty="id"> ... </insert>
//insert语句之前使用;
//然后可以在传入的参数中直接获取id
<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID() AS id
</selectKey>
根据时间筛选记录
//%Y-%m-%d %H:%i到分 %Y-%m-%d %H:%i:%S 到秒
<if test="startTime != null and startTime != ">
AND DATE_FORMAT(a.createTime,%Y-%m-%d %H:%i) >= #{
startTime}
</if>
<if test="endTime != null and endTime != ">
AND DATE_FORMAT(a.createTime,%Y-%m-%d %H:%i) <![CDATA[ <= ]]> #{
endTime}
</if>
格式化金额到2位数
ROUND(a.XXX,2) //精确数字两位小数 **后续可进行计算** FORMAT(a.XXX, 2) //精确数字两位小数 **后续不可进行计算**
case when 语法
case a.deleted when 0 THEN 已完成 when 1 THEN 已撤单 end as deletedName //别名
if语法
if(a.deleted=1,已删除,未删除) as XXX //如果deleted等于1,则取‘已删除’,否则取‘未删除’ IFNULL(a.orderSumAmount,0) //如果orderSumAmount为null,则值为0
使用union合并两张表结果,注意
两张表结果查询出的结果,字段名字必须完全相同,并一一对应
MySql 获取自增序号
select **(@i:=@i+1)sn**,a.* from biz_spend_order_goods a,**(select @i:=0)t** WHERE goodsId=5 and type=2 ORDER BY a.id asc
查询数据库是否被锁定,或者造成死锁
select * from information_schema.innodb_trx; select * from information_schema.innodb_locks; select * from information_schema.innodb_lock_waits; show full processlist kill 142975 //杀死被锁线程
从一张表批量更新(复制)数据到另一张表
//从m表中查询数据并复制更新到r表中 UPDATE biz_spend_order r INNER JOIN (SELECT id,proviceCode,cityCode,areaCode,provinceName,cityName,areaName FROM biz_member) m ON m.id=r.memberId SET r.proviceCode=m.proviceCode,r.cityCode=m.cityCode,r.areaCode=m.areaCode,r.provinceName=m.provinceName,r.cityName=m.cityName,r.areaName=m.areaName;
将以逗号分隔值拆分成多个单个值
//a.parentIds 值举例:5/6/9/
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(a.parentIds,/,b.help_topic_id+1),/,-1) AS num
FROM
wo_category a,mysql.help_topic b
WHERE
b.help_topic_id <![CDATA[ < ]]> LENGTH(a.parentIds)-LENGTH(REPLACE(a.parentIds,/,))+1 and a.id = #{
id}
持续更新…
下一篇:
MySQL删除或清空表内数据的方法
