1.生成自增顺序。
Oracle中有一个伪列rownum,可以在生成查询结果表的时候生成一组递增的序列号。
MySQL中没有这个伪列,但是有时候要用,可以用如下方法模拟生成一列自增序号。
SELECT (@i:= @i+1) as numSort,t.* from member as t,(SELECT @i:=0) as i ORDER BY t.id DESC
说明:在from后面通过"(SELECT @i:=0) as i"设置一个虚拟的数值(可以从任意数开始),在select后面用(@i:= @i+1) as “序号”, 按照任何数值递增。
2. 查询某行数据的位置。
在上面语句的基础上,查询某条记录的位置。
select newTable.numSort from (SELECT (@i:= @i+1) as numSort,t.* from member as t,(SELECT @i:=0) as i ORDER BY t.id DESC) newTable WHERE id = 100
说明:把自增排序表作为一个新表(newTable),在此基础上通过主键id查询某条数据的排序的数值(numSort)。