关于SQL语句的问题,高手请进

来源:百度知道 编辑:UC知道 时间:2024/06/09 21:50:19
我想知道下面这段代码中这个 FullQueryString拼装出来的SQL语句大概是什么意思,这是对传入的参数“queryString”的二次整理语句,我说一下这些参数吧,startIndex是所能查找到的记录的开始,recordNumber是记录总数,queryString就是第一次未经整理的查询语句,searchWhere是查询条件,orderBy就是排序方式。我是第一次接触这样的句法,所以不太理解这些什么ROW_NUMBER(),AS rownum ,AS T1) AS T2 这些的我不是很理解,各位高手能举一个例子说明一下吗?谢谢

protected String GetFullQueryString(int startIndex, int recordNumber, String queryString, String searchWhere, String orderBy)
{
StringBuilder fullQueryString = new StringBuilder();

fullQueryString.Append("SELECT * FROM (SELECT T1.*, ROW_NUMBER() OVER(" + orderBy + ") AS rownum FROM (");
fullQueryString.Append(queryString);
fullQueryString.Append(" " + searchWhere);
fullQueryString.Append(") AS T1) AS T2 WHERE rownum BETWEEN " +
startIndex.ToString() + " AND " + (startIndex + recordNumber - 1).To

①ROW_NUMBER:

Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。

②AS rownum
这个是定义一个字段的别名,也就是说需要使用你前面ROW_NUMBER() OVER(" + orderBy + ") 这一部分的时候,可以直接使用rownum来代替。

③AS T1 AS T2
这是定义一个表或者检索结果集的别名,和上面的类似,也是在使用该表和检索结果集的时候可以直接使用该别名。

例子的话,参见以下的网站吧,特别是关于ROW_NUMBER部分的。

http://hi.baidu.com/yyflyons2008/blog/item/a73eacfaf79fcc9058ee9019.html

关于你的SELECT * FROM (SELECT T1.*, ROW_NUMBER() OVER(" + orderBy + ") AS rownum FROM这个地解释:

ROW_NUMBER() OVER(" + orderBy + ") AS rownum 这一部分是指的将T1里面的数据按照参数orderBy指定的顺序进行排序后,按照顺序取得行号,并为其取别名rownum。

SELECT T1.*, ROW_NUMBER() OVER(" + orderBy + ") AS rownum FROM .....
T1.*是说将T1表的所有字段取出来,加上上面取得的行号,共同组成结果集。

外面的一层SELECT * FROM ,是指的把上面的检索结果作为子查询,再次和另外的表连接等处理后,再次从中选择部分字段(*的话,是全部)。

as