关于SQL语句的问题,高手请进
我想知道下面这段代码中这个FullQueryString拼装出来的SQL语句大概是什么意思,这是对传入的参数“queryString”的二次整理语句,我说一下这些参数吧,...
我想知道下面这段代码中这个 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).ToString());
}
return fullQueryString.ToString();
}
感谢这么多位耐心解答,我初学SQL,所以比较笨,还望高手不要取笑我,我现在想知道这句中的SELECT * FROM (SELECT T1.*, ROW_NUMBER() OVER(" + orderBy + ") AS rownum FROM的具体解释 展开
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).ToString());
}
return fullQueryString.ToString();
}
感谢这么多位耐心解答,我初学SQL,所以比较笨,还望高手不要取笑我,我现在想知道这句中的SELECT * FROM (SELECT T1.*, ROW_NUMBER() OVER(" + orderBy + ") AS rownum FROM的具体解释 展开
展开全部
①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 ,是指的把上面的检索结果作为子查询,再次和另外的表连接等处理后,再次从中选择部分字段(*的话,是全部)。
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的意思是将查询到的值赋值给后面的别名 直接引用别名就可以了
比如select count(*) as (这里随意定义一个别名) from table
比如select count(*) as (这里随意定义一个别名) from table
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ROW_NUMBER()一看就是个函数,英文意义就是行号
as 就是给对象 起个别名
as 就是给对象 起个别名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你看下这个网址 研究一下吧
参考资料: http://hi.baidu.com/fuhengyu/blog/item/adb30aafe4df88c87cd92ae9.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询