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行。
当然,这个只是子查询的一个非常简单的应用,后续复习表连接的时候再说。