抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

一. 如何添加序号的方法:

方法1:

Select (@i:=@i+1) as RowNum, A.* from Table1 A,(Select @i:=0) B order by a.id desc limit 0, 10;

方法2:

Set @i:=0;

Select (@i:=@i+1) as RowNum, A. from Table1 A order by a.id desc limit 0,10;

以下SQL可在分页中使用:

set @i:=10; select (@i:=@i+1) as RowNum, A. from Table1 A order by a.id desc limit 10,5;

查询结果从第10条开始,取5条(每页5行数据)。序号也从10开始。

以上方法适合在单表查询添加序号RowNum,如果要对复杂的查询或视图添加RowNum,则需先做查询(分组或排序后)结果,然后将查询结果作为子查询的表,再添加行序号。(看二)

二. 对视图查询排序并添加序号

注意:如果是视图或复杂的包含子查询的SQL查询,需先对视图或复杂查询进行查询和排序后,再将查询结果做为表A 添加序号。

如:

Set @i:=X;select (@i:=@i+1) as RowNum, A.* from 

  (Select *  from Table1 T where 1=1 order by T.id desc limit X, N) A

Select (@i:=@i+1) as RowNum, A.* from (Select @i:=X) B,

  (Select *  from Table1 T where 1=1 order by T.id desc limit X, N) A

这种方式适合对表、视图和复杂查询结果添加序号,是通用的方式。再分页查询中常用。

三. 在程序中使用带变量的SQL语句

在.net程序中使用带变量的SQL语句时,需要在数据库的连接字符串后面添加“Allow User Variables=True;”。这样就可以实现,SQL语句参数自定义化。

否则会报错“Fatal error encountered during command execution.”

PostgreSQL中的行号

SELECT

 ROW_NUMBER() over(ORDER bY id DESC ) AS rowNum,

    id,

vulnerability,

application,

type,

protocol,

approval_status,

update_time 

FROM

plugin_manage a where 1=1 

    <if test=" vulnerability != null">

        and vulnerability like concat('%',#{vulnerability},'%')

    </if>

     <if test=" application != null">

        and application like concat('%',#{application},'%')

    </if>

     <if test=" type != null">

        and type like concat('%',#{type},'%')

    </if>

     <if test=" protocol != null">

        and protocol like concat('%',#{protocol},'%')

    </if>


评论