数据库查询

 

mysql查询结果添加序列号

 

第一种方法:

select   (@i:=@i+1)   as   i,table_name.*   from   table_name,(select   @i:=0)   as   it 

第二种方法:

 

 

 

set @rownum=0;
select @rownum:=@rownum+1 as rownum, t.username from auth_user t limit 1,5;

 

 

Sql代码   收藏代码
  1. SELECT   
  2. --COUNT(*) AS '数量' ,  
  3. row_number() over (order by a.EMPNAME) as '序号',  
  4. (SELECT top 1  
  5. a.EMPNAME AS '姓名'  
  6. FROM PT_PREHIREEMP_DETAILS a  
  7. INNER JOIN PT_PREHIREEMP_MAIN b  
  8. ON a.ORGCODE = b.ORGCODE  
  9. WHERE a.RPTDATE BETWEEN '2016-01-05 00:00:00.000'AND '2016-01-05 18:00:00.000'  
  10. AND b.LETTERSEQ = '20150076'  
  11. AND a.ORGCODE = '150401' ORDER BY a.EMPNAME) AS '名字',  
  12. a.EMPNAME AS '姓名',  
  13. a.GENDER AS '性别',  
  14. a.UNIT,  
  15. a.IDENTITYNO AS '身份证号',  
  16. a.INGRUOPMETHOD AS '进入本企业方式',  
  17. a.REMARK AS '备注',  
  18. b.LETTERSEQ AS '编号',  
  19. (SELECT CONVERT(DATE,a.RPTDATE,120)) AS '填报时间'  
  20. FROM PT_PREHIREEMP_DETAILS a  
  21. INNER JOIN PT_PREHIREEMP_MAIN b  
  22. ON a.ORGCODE = b.ORGCODE  
  23. WHERE a.RPTDATE BETWEEN '2016-01-05 00:00:00.000'AND '2016-01-05 18:00:00.000'  
  24. AND b.LETTERSEQ = '20150076'  
  25. AND a.ORGCODE = '150401' GROUP BY a.EMPNAME,a.EMPNAME,a.GENDER,a.UNIT,a.IDENTITYNO,a.INGRUOPMETHOD,a.REMARK,b.LETTERSEQ ,a.RPTDATE;  

 查询结果如下:

 一,详解:

 

Sql代码   收藏代码
  1. row_number() over (order by a.EMPNAME) as '序号';//给查询的条数做序号  

top 1得到第一条记录。以前做的分页查询的效果就是这个top,可以得到m n直接的记录。

 

 二.集合查询总条数

select count(*) from ( select a,b from table where ...) a

注意集合后面必须要有a,这是给集合添加一个别名。

 

也可以使用下面方法查询总条数:

Sql代码   收藏代码
  1. select   
  2.   
  3. (SELECT TOP 1  (row_number() over (order by a.EMPNAME)) FROM PT_PREHIREEMP_DETAILS a  
  4. INNER JOIN PT_PREHIREEMP_MAIN b  
  5. ON a.ORGCODE = b.ORGCODE  
  6. WHERE  b.LETTERSEQ = '20150076' GROUP BY a.EMPNAME  ORDER BY row_number() over (order by a.EMPNAME) DESCAS '总数'  
  7.   
  8. FROM PT_PREHIREEMP_DETAILS a  
  9. INNER JOIN PT_PREHIREEMP_MAIN b  
  10. ON a.ORGCODE = b.ORGCODE  
  11. WHERE  b.LETTERSEQ = '20150076' GROUP BY a.EMPNAME  

 

 解释

top 1 得到一个数,ORDER BY row_number() over (order by a.EMPNAME) DESC)  把序号按照EMPNAME倒叙排列

 

注意:上面基本能把效果做出来,但是效率没有测试,优化查询待续......

 

参考:http://435727748.iteye.com/blog/2306903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值