ADO.NET学习笔记--子查询

将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。SELECT * FROM(SELECT * FROM T2 where FAge<30)

 

单值做为子查询

SELECT 1 AS f1,2,(SELECT MIN(FYearPublished) FROM T_Book),(SELECT MAX(FYearPublished) FROM T_Book) AS f4

只有返回且仅返回一行、一列数据的子查询才能当成单值子查询。下面的是错误的:SELECT 1 AS f1,2,(SELECT FYearPublished FROM T_Book)

SELECT * FROM T_ReaderFavorite WHERE FCategoryId=(SELECT FId FROM T_Category WHERE FName='Story')

如果子查询是多行单列的子查询,这样的子查询的结果集其实是一个集合。

SELECT * FROM T_Reader

WHERE FYearOfJoin IN

(

select FYearPublished FROM T_Book

)

限制结果集。返回第3行到第5行的数据( ROW_NUMBER 不能用在where子句中,所以将带行号的执行结果作为子查询,就可以将结果当成表一样用了):

SELECT * FROM

(

SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) AS rownum,

FNumber,FName,FSalary,FAge FROM T_Employee

) AS a

WHERE a.rownum>=3 AND a.rownum<=5

posted @ 2013-02-28 16:20  davidlovelife  阅读(194)  评论(0编辑  收藏  举报