• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
只想搞钱的程序媛
帮助1

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

  1.  
    <select id="getStringAuditBpm" resultMap="CqProjectAuditBpmVo">
  2.  
    SELECT
  3.  
    c.process_node_code,
  4.  
    c.process_node_name,
  5.  
    ( @i := @i 1 ) AS serial_number
  6.  
    FROM
  7.  
    ext_act_flow_data a,
  8.  
    ext_act_process b,
  9.  
    ext_act_process_node c,
  10.  
    ( SELECT @i := 0 ) AS itable
  11.  
    WHERE
  12.  
    a.form_data_id = #{id}
  13.  
    AND a.process_key = b.process_key
  14.  
    AND b.id = c.process_id
  15.  
    ORDER BY c.id ASC;
  16.  
    </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;

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghfeah
系列文章
更多 icon
同类精品
更多 icon
继续加载