就是查询一条记录在MYSQL中是第几行,用处是LIMIT来读上一个和下一个记录。在就是可否在查询记录中添加判断,比如查询的这个记录有一个类别,查这个类别有多少条记录,它是第几条。反正最终的目的就是为了一条记录,然后显示它上一条记录的名称和下一条记录的名称。期待高手,感激不尽。俺的MYSQL自学,基本只会查询修改插入这些简单的,今日膜拜学习来了。

解决方案 »

  1.   

    上一个,下一个,跟当前记录在第几行没关系比如
    我要求按照插入时间排序,那么前一行就是比这条早插入的,时间离着最近的如果我要求修改时间的上一条呢,如果我要求权重最接近的上一条呢?……--------------------------------------
    所以,只要规定排序规则就好了, WHERE …AND条件… AND add_time<当前这条的时间 ORDER BY add_time DESC LIMIT 1就是add_time时间最接近的上一条
      

  2.   

    你上一条和下一条 是根据创建数据的时间来排序的  你的上一条就是小于当前时间数据的第一条
    你的下一条就是大于当前时间数据的第一条
    用SQL语句来展示就是2楼的同学所说
      

  3.   

    是不是 类似于上一篇,下一篇的功能?
    查询比当前ID小(where id < '.$id.'上一篇)和比当前ID大(where id > '.$id.'下一篇)的1条(limit 0,1)数据
      

  4.   

    $sql = "SELECT * FROM `article` WHERE sortid=".$sortid;
    $rows = $db->getRows($sql);$m = 0;
    for($i=0;$i<count($rows);$i++){
    if($rows[$i]["id"] == $_GET['id']){
    $m = $i+1;
    $next = ($i<count($rows)-1)?$rows[$m]["id"]:"";
    break;
    }
    }
    这个是我获取当前id为$_GET['id']的下一条的id的方法,上一条的方法稍微变化一下就可以吧。写得不好,也请别的老师能给点意见。
      

  5.   

    唉,思路啊,我咋这么没感觉。这个很不错。就是计算量大了点。这个就是可以获得记录在当前类别的行数。也可以说是第几条记录。但是没有SQL语句解决吗?现在仅仅只想知道当前数据在当前类别所有数据中是第几条
      

  6.   

    感谢提供思路,但是没有SQL语句解决吗?现在仅仅只想知道当前数据在当前类别所有数据中是第几条,4楼可以做到,但是计算量有点多
      

  7.   

    $sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'] . " ORDER BY id DESC LIMIT 1";/////上一条$sql = "SELECT * FROM `article` WHERE sortid=".$sortid . " AND id>" . $_GET['id'] . " ORDER BY id ASC LIMIT 1";/////下一条
    //这样子分两次查询,是常用的办法,你上面的,一下子搜索所有的数据,就失去数据库索引的意义了
    //sortid   id都加索引,这种查询效率会非常高
      

  8.   

    很感谢,这个已经学到了,我想知道的有没有知道当前记录在当前类别中是第几条的
    当前类别总条数$counts = mysql_fetch_array(mysql_query("select count(*) from table where sortid = ".$storid."";
    echo $counts[0];但是怎么取得当前记录是当前类别的第多少条呢;
    我是想实现上一个,下一个(已被你们解决)
    当前 ".$当前第几条."(不知道怎么搞) / 总记录 $counts[0]
    这样子可以让访问者看的更清楚一些
      

  9.   

    第几个可以这样$sql = "SELECT (count(*) + 1) AS num FROM `article` WHERE sortid=".$sortid . " AND id<" . $_GET['id'];
    //执行后,的结果,就是第几个
      

  10.   

    还有什么好说的,怎一个牛字了的,感谢指点,这个语句大概的意思是,获取类别sortid中id小于当前ID的记录总数,然后加一,就等于是当前ID所在当前类别的位置。
    感谢感谢!!
      

  11.   

    结帖了,wcunw 也很不错,提你一点点分数给他可以吧。很感激CSDN各位的指点。