Sql Server2008温故而知新系列07:查询-子查询及分页应用

sql server中很多时候我们需要子查询,子查询简单的理解就是一个查询中嵌套的另一个查询。

由此可知,一个查询语句中,也可以有多个子查询;不过可得注意语句执行的效率。

延续上一讲06中末尾的分页查询需求:排序过后的数据取第二行到第五行记录:

在mysql中直接在查询后面加上limit 1,4就可以了,但是在sql server2008中就需要用到子查询了。

如:

 1 --以eid排序取前5位
 2 select top 5 eid, name,sex,hida 
 3     from emp 
 4     where flag=1 
 5     order by eid
 6 --加子查询筛选条件 取前5位中的后4位    
 7 select top 4 eid, name,sex,hida 
 8     from emp 
 9     where flag=1 and eid >(select top 1 eid from emp where flag=1 order by eid)
10     order by eid

 

 上一个查询中,where子句中:子查询的结果是取排序后的第一个eid,然后用eid>第一个eid过滤这一行,所以结果得到前5行中的后4行。

当然,这个只是子查询的一个非常简单的应用,后续复习表连接的时候再说。

 

posted @ 2019-11-15 14:01  無尘  阅读(200)  评论(0编辑  收藏  举报