数据库查询

 

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

猜你喜欢

转载自zhao103804.iteye.com/blog/2306964