select top 2 * from jbsj where bljg is not null and id not in (select top 2 id from jbsj order by jbks)
比如这个,有什么不对,以及如何确定上下页,我是菜鸟,谢谢

解决方案 »

  1.   

    数据库是什么?sqlserver? mysql? db2? oracle?
      

  2.   

    select top 2 * from jbsj where bljg is not null and id not in (select top 2*4 id from jbsj order by jbks)top 2 *是每页2条纪录
    top 2*4是显示第4页纪录
      

  3.   

    比如当前是第四页,那么下一页就是查询top 2*5的数据,上一页就是查询top 2*3的数据
      

  4.   

    String sql="select top "+page_record+" address,age,deptid,empid,empname,phone,sex from Emp1 where 1=1 "+cond+" and empid not in(select top "+(curpage-1)*page_record+" empid from Emp1 where 1=1 "+cond+" order by empid) order by empid";
    表名和字段名改一下就可以了,别的都比较通用,不过你要写一个分页类
      

  5.   


    给你个例子看看,是个简易的。下面的是和数据库交互的java类
    public PageBean FindMessageByPage(int currpage,String userid) throws DaoException
    {
    //下面的“10”表示你一页的信息条数,currpage是指当前页数。
        String query = "select top "+currpage*10+" * from NXTV_chat where Chat_userid=? order by Chat_id ";
        String queryNum = "select count(Chat_id) from NXTV_chat ";
        PageBean pagebean = new PageBean();
        int InfoNum = 0;
        List MsgList = new ArrayList();
        try
        {
           PreparedStatement stm = conn.prepareStatement(query);
           stm.setString(1, userid);
           ResultSet rs = stm.executeQuery();
           int i = 1;
           while (rs.next())
           {
    if(i>(currpage-1)*10)
    {
    MessageBean msg = new MessageBean();
    msg.setChat_id(rs.getInt("Chat_id"));
    msg.setChat_info(rs.getString("Chat_info"));
    msg.setChat_addr(rs.getString("Chat_ip"));
    MsgList.add(msg);
    }
    i++;
           }
             stm = conn.prepareStatement(queryNum);
    rs = stm.executeQuery();
    while (rs.next())
    {
    InfoNum = rs.getInt(1);
    }
    rs.close();
    stm.close();
        }
        catch (SQLException se) 
         {
    se.printStackTrace();
    throw new DaoException("查询人物信息时出错,请联系系统管理员。");
         }
     
             pagebean.setUserList(MsgList);// 信息列表
    pagebean.setCurrPage(currpage);// 当前页数
    pagebean.setInfoNum(InfoNum);// 信息总数
    pagebean.setPageNum((InfoNum + 9) / 10);// 页面总数
     
     return pagebean;

    }
      

  6.   

    这个是分页显示的javabean类。两个结合起来看应该明白了吧
    public class PageBean implements Serializable 
    {
    /**
     * 总页数
     */
    private int PageNum;
    /**
     * 当前页
     */
    private int CurrPage;
    /**
     * 信息总数
     */
    private int InfoNum;
    /**
     * 信息列表
     */
    private List UserList;


    public int getCurrPage() {
    return CurrPage;
    }
    public void setCurrPage(int currPage) {
    CurrPage = currPage;
    }
    public int getInfoNum() {
    return InfoNum;
    }
    public void setInfoNum(int infoNum) {
    InfoNum = infoNum;
    }
    public int getPageNum() {
    return PageNum;
    }
    public void setPageNum(int pageNum) {
    PageNum = pageNum;
    }
    public List getUserList() {
    return UserList;
    }
    public void setUserList(List userList) {
    UserList = userList;
    }

    }
      

  7.   

    int thisRowCount = rst.getRow(); //得到当前行号
        //得到总页数
        iPageCount = ( ( thisRowCount % iRowCount ) == 0 ? thisRowCount / iRowCount :
        ( thisRowCount / iRowCount ) + 1 );
    //////////////////////////////
        if ( iPageCount == 0 ){////// 不会出现,
        }///////////////////////////    if ( iPageNow > iPageCount ) {
          iPageNow = iPageCount;
        }
        else if ( iPageNow <= 0 ) {
          iPageNow = 1;
        }
        //光标定位
        rst.absolute( ( iPageNow - 1 ) * iRowCount + 1);  在bean 里做 这个方法也不错啊
      

  8.   

     回复人:liaohaiying(小菜) ( 五级(中级)) 信誉:100  2006-12-26 15:40:45  得分:0

    select top 2 * from jbsj where bljg is not null and id not in (select top 2*4 id from jbsj order by jbks)top 2 *是每页2条纪录
    top 2*4是显示第4页纪录
    小菜同学可以留个QQ吗?我用你的方法要出错啊
      

  9.   

    select top 2 * from jbsj where bljg is not null and id not in (select top 2 id from jbsj order by jbks)sql语句里面分别用到了is not和 not in两个not操作,可见lz的水平相当之烂,除非万不得已坚决不用not
      

  10.   

    select * from
    (select top 20 列名1 from 表名1 order by 列名 asc )a
    where a.列名 not in
    (select top 10 列名2 from 表名1 order by 列名 asc)//不知道你看不看得懂 ,注意排序一定不要忘记
    //20和10是我随便举的例子,就是你每页要显示的条数
    //列名1就是你要显示的列名
    //列名2一定只能有一 列而且就等于a.列名还要废话一句:
    请不要在论坛里发广告!
      

  11.   

    其实你只要抓住几点就可以了。。1、统计你分页的数据有多少条
    2、根据条数和每页显示的记录数有多少页
    3、然后根据当前选择的页数计算记录起始显示位置和结束位置
    4、把查询的数据显示到页面
    这大概就是这个样子,起始分页很简单了,只要把他的思路搞清楚。。
    然后就是细节的问题了,比如
    1、是否有上一页、下一页
    2、每页显示的记录条数是设置死的,还是通过参数去配置的
    3、是否橡Google的分页一样加上一个数字导航
    等等,,你先把简单的写出来,然后再去完善
      

  12.   

    /**
     * 返回一页数据
     * 
     * @param table:表名
     * @param returnFields:返回的字段,字段可以是多个,用“,”隔开
     * @param keyField:索引字段,比如ID
     * @param sWhere:条件
     * @param countOfPage:每页显示记录条数
     * @param pageOfGroup:每一组有多少页(为了返回总的组数,翻页函数需要用到)
     * @param pageNum:取第几页的数据
     * @return vect[vect.size()-3]:
     *         总行数;vect[vect.size-2]:总页数;vect[vect.size-1]:总组数;vect[3]..vect[end]:Hashtable
     *         Hashtable.get(0):字段名称;Hashtable.get(1):值
     */
    public Vector getOnePageDate(String table, String returnFields,
    String keyField, String sWhere, String orderby, int countOfPage,
    int pageNum, int pageOfGroup) {
    int iRows = this.getCount(table, sWhere);
    int iPages = iRows / countOfPage;
    if (iRows % countOfPage > 0 || iPages == 0) {
    iPages++;
    }
    int iGroups = iPages / pageOfGroup;
    if (iGroups == 0 || iPages % pageOfGroup != 0) {
    iGroups++;
    }
    if (pageNum < 1)
    pageNum = 1;
    int beginRow = (pageNum - 1) * countOfPage;
    String strSQL = "select top " + countOfPage + " " + returnFields
    + " from " + table;
    strSQL = strSQL + " where " + keyField + " not in(" + "select top "
    + beginRow + " " + keyField + " from " + table;
    if (!sWhere.equals("")) {
    strSQL = strSQL + " where " + sWhere;
    }
    if (!orderby.equals("")) {
    strSQL = strSQL + " order by " + orderby;
    }
    strSQL = strSQL + ")";
    if (!sWhere.equals("")) {
    strSQL = strSQL + " and " + sWhere;
    }
    if (!orderby.equals("")) {
    strSQL = strSQL + " order by " + orderby;
    }
    Vector vect = null;
    vect = getData(strSQL);
    vect.add("" + iRows);
    vect.add("" + iPages);
    vect.add("" + iGroups);
    return vect;
    }/////////
    /** 获得翻页Html */
    public String turnPageHtml(int rows, int curPageNum,
    int iPageOfGroup, String curUrl, int pages, int groups) {
    int iCurGroupNum = (curPageNum / iPageOfGroup);
    if (curPageNum % iPageOfGroup != 0) {
    iCurGroupNum++;
    }
    String sPreStr = "<a href='" + curUrl + "page="
    + ((iCurGroupNum - 2) * iPageOfGroup + 1) + "'>上"
    + iPageOfGroup + "页</a>";
    String sNextStr = "<a href='" + curUrl + "page="
    + ((iCurGroupNum) * iPageOfGroup + 1) + "'>下" + iPageOfGroup
    + "页</a>";
    if (iCurGroupNum == 1) {
    sPreStr = "";
    }
    if (iCurGroupNum >= groups) {
    sNextStr = "";
    }
    StringBuffer sTBuf = new StringBuffer();
    sTBuf.append("<table align='center' cellpadding='2' cellspacing='1'>");
    sTBuf.append("<tr>");
    sTBuf.append("<td>共有记录" + rows + "条/" + pages + "页</td>");
    sTBuf.append("<td>" + sPreStr + "</td>");
    // 当前组页码开始
    int iNum = (iCurGroupNum - 1) * iPageOfGroup;
    // 当前页码
    int pageNum = 0;
    for (int i = 1; i <= iPageOfGroup; i++) {
    pageNum = iNum + i;
    if (pageNum > pages)
    break;
    if (pageNum == curPageNum) {
    sTBuf.append("<td>[" + pageNum + "]</td>");
    } else {
    sTBuf.append("<td><a href='" + curUrl + "page=" + pageNum
    + "'>" + pageNum);
    }
    sTBuf.append("</td>");
    }
    sTBuf.append("<td>" + sNextStr + "</td>");
    sTBuf.append("</table>");
    return sTBuf.toString();
    }
      

  13.   

    一、现在网上有很多分页标签。在google上搜一下就能找到
    二、如果想要自己写的话也很简单,给你个简单的,如果不算显示部分 也就几行就搞顶^0^
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.util.*,java.sql.*"%>
    <jsp:useBean id="aa" scope="page" class="com.jsp.connDB"/>
    <html>
    <body>
    <%
    ResultSet rs=aa.executeQuery("select * from user_info");
    if(!rs.next())
    {
    out.println("无记录!");
    }
    else{
    String str=(String)request.getParameter("Page");
    if(str==null)
    {
    str="0";
    }
    int pagesize=3;
    rs.last();
    int RecordCount=rs.getRow();
    int maxPage=0;
    maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1); int Page=Integer.parseInt(str);
    if(Page<1)
    {
    Page=1;
    }
    else
    {
    if(((Page-1)*pagesize+1)>RecordCount)
    {
    Page=maxPage;
    }
    }
    rs.absolute((Page-1)*pagesize+1);
    %>
    <center>
    <table border="1">
    <tr>
    <td>ID</td>
    <td>姓名</td>
    <td>年龄</td>
    </tr>
    <%

    for(int i=1;i<=pagesize;i++)
    {

    %>
    <tr>
    <td><%=rs.getInt("ID")%></td>
    <td><%=rs.getString("name")%></td>
    <td><%=rs.getInt("age")%></td>
    </tr>
    <%
    try
    {
    if(!rs.next())
    {
    break;
    }
    }
    catch(Exception e)
    {

    }
    }
    %> <tr>
    <td><%out.println("<br>"+"总行数为:"+RecordCount);%></td>
    <td><%out.println("<br>"+"当前页数为:"+Page);%>
    <td><%out.println("<br>"+"总页数为:"+maxPage);%>
    </tr>
    </table>
    <table >
    <tr>
    <td height=100></td>
    </tr>
    </table>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td align="center">当前页数:[<%=Page%>/<%=maxPage%>]&nbsp;
    <%if(Page>1){%>
    <a href="index.jsp?Page=1">首页</a> <a href="index.jsp?Page=<%=Page-1%>">上一页</a>
    <%
    }
    if(Page<maxPage)
    {
    %>
     <a href="index.jsp?Page=<%=Page+1%>">下一页</a> <a href="index.jsp?Page=<%=maxPage%>">尾页&nbsp;</a>
    <%}%>
    </td>
      </tr>
    </table>
    </center>
    <%}%>
    </body>
    </html>
      

  14.   

    你把sql语句改一下 再根据你的需要把显示内容改一下就是你想要的东西了
      

  15.   

    for oracleselect * from ( select S.*,rownum rn from school S  where rownum <pagenum*pageSize+1 ) where rn >= (pagenum-1)*pageSize+1for mysql,請用limit