SELECT (@i :=@i + 1)和(SELECT @i := 0)在sql里什么含义

今天接着别人的代码写,发现xml里这样一段sql,里面有不常用的函数:

 <select id="getStringAuditBpm" resultMap="CqProjectAuditBpmVo">
        SELECT
            c.process_node_code,
            c.process_node_name,
            ( @i := @i + 1 ) AS serial_number
        FROM
            ext_act_flow_data a,
            ext_act_process b,
            ext_act_process_node c,
            ( SELECT @i := 0 ) AS itable
        WHERE
            a.form_data_id = #{id}
          AND a.process_key = b.process_key
          AND b.id = c.process_id
        ORDER BY c.id ASC;
    </select>

我查了一下其中 SELECT (@i :=@i + 1) (SELECT @i := 0) 的用法

SELECT (@i :=@i + 1)  是为了生成自增的序列号字段

SELECT @i := 0 是为了将i进行初始化每次查询的序列号都会从1开始进行排序生成序列号

案例:
       1、

SELECT  (@i :=@i + 1) AS i,         d.pkid,d.createTime,d.updateTime,d.date,d.employeeNum         ,d.serviceNum,d.serviceGodNum,d.serviceProjectNum         ,d.totalAmount,d.avgProject,d.avgAmount,d.empForNum

,d.storeId,d.isValid,s.name as storeName

FROM daily d,store s,(SELECT @i := 0) AS it        

WHERE d.isValid=1 and s.pkid=d.storeId    

 

2、

 SELECT
            c.process_node_code,
            c.process_node_name,
            ( @i := @i + 1 ) AS serial_number
        FROM
            ext_act_flow_data a,
            ext_act_process b,
            ext_act_process_node c,
            ( SELECT @i := 0 ) AS itable
        WHERE
            a.form_data_id = #{id}
          AND a.process_key = b.process_key
          AND b.id = c.process_id
        ORDER BY c.id ASC;

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值