sql = "select * from" +
"(select msg.*,rownum r from msg where 1=1 and " +
username + title + msgcontent + sendto + state + msg_create_date +
" and rownum <= " + msgs_in_one_page*page_no + ") " +
"t where t.r >" + msgs_in_one_page*(page_no - 1);
什么意思,求解
这是 oracle数据库
这里有变量,这应该是分页的sql语句,求解释
如果想要知道SQL语句查出来的是什么东西,这个就真的看不出来
如果只是想要知道这个语句是怎么实现分页查询的,可以看下面:
msgs_in_one_page应该是每页显示的条数,page_no表示需要查询的第几页,而rownum是Oracle的一个虚拟字段,表示这个记录处于数据的第几行(大概是这么个意思)
首先使用rownum <= msgs_in_one_page*page_no作为子查询的筛选条件,表示查询出来前面n条记录,这里的n是需要查询的第几页及前面所有页的数据
接着在子查询的select语句中存在rownum r,表示把rownum也作为一个字段r暴露给外面的查询
然后是在外面的查询使用where t.r > msgs_in_one_page*(page_no - 1)表示r的值要大于前一页的最后一条记录,也就是过滤掉前一页及前面所有页的数据,只保留需要查询的第几页的数据
结果就是查询出来的数据就是page_no表示的那一页的数据了
username + title + msgcontent + sendto + state + msg_create_date这里都不能构成条件,没看懂你的SQL语句,如果这样写是正确的,记得给我说说是怎么回事哈
username + title + msgcontent + sendto + state + msg_create_date这几个都是变量,我也不明白,求解
t是什么?
首先这个SQL语句你是从哪里弄来的?很明显是一个分页的查询语句,而且是拼凑而成的,从经验上来讲应该不是一个正确的SQL语句,字符串的形式拼凑SQL语句是很正常的和常见的一种SQL语句的写法。不过变量中的值不光是数字类型的(从名字上来看,有字符串类型的,有时间类型的)所以此SQL语句是应该是错误的!
username + title + msgcontent + sendto + state + msg_create_date是从map中取出的变量,上文有这些,但是我不明白上面的分页sql语句什么意思,
就是一sql语句啊,不知道这句写的对不对。你自己主要搞清楚那个 ROW_Number Over() 函数就行了。
username + title + msgcontent + sendto + state + msg_create_date是从map中取出的变量,上文有这些,但是我不明白上面的分页sql语句什么意思,
@博学多思: 看如下列子:
假设这样一张表 news(ID,HeadLine, Body,Time,Pic)
比如检索出22-32条记录(这两个数据可以在程序中凑配如你自己给出的msgs_in_one_page*page_no,那么这里msgs_in_one_page表示一页显示的数据条数,page_no表示页号,实现高速分页等其他功能)
select * from(select *, ROW_NUMBER() over (order by Time Desc) as row_number from news ) as V where V.row_number>=22 and V.row_number<32;
1. ROW_NUMBER() over (order by Time Desc) as row_number :按时间降序把检索出来的数据编号,该列取别名为row_number。
2. 把检索出来的数据作为一个子表 V
3. 在V中检索出满足行号的数据。
username + title + msgcontent + sendto + state + msg_create_date +
" and rownum <= " + msgs_in_one_page*page_no + ") " +
"t where t.r >" + msgs_in_one_page*(page_no - 1);
这个就是通过变量连接查询字符串
你在上下文里找找看,哪里有这些变量
username + title + msgcontent + sendto + state + msg_create_date是从map中取出的变量,上文有这些,但是我不明白上面的分页sql语句什么意思,
@博学多思: 你设个断点 调试一下就明白了