对,忘了说了,用的数据库系统是mysql

解决方案 »

  1.   

    不知你的数据表结构是什么样的,给个最通用的吧,1:如果表中有100条记录
    SELECT * FROM tA LIMIT 99, 1;也就是说你必须知道表中有多少条记录2:用 SELECT COUNT(*) FROM tA;
    呵呵,不过这个语句对于 InnoDB 表可不适用了,
    因为这条语句在 InnoDB 中效率太差了
      

  2.   

    数据表结构指的是什么呢?
    是指表的关系结构吗?
    Inno DB又是什么呢?
    我的关系是:这样的:
    CREATE TABLE msg
    (
     msgid INT UNSIGNED NOT NULL PRIMARY KEY,
     title varchar(50) NOT NULL,
     content TEXT NOT NULL,
     sender varchar(10),
     dt DATETIME NOT NULL
    );
    每个字段都是不定长的还有就是我并不知道表中的记录条数,第一个问题有没有别的办法解决呢?
      

  3.   

    第一个问题你完全可以用另外一种方法解决比如你想按照时间取最后一条记录,那么你只需要按照时间降序排列然后取第一条记录就可以了SQL为select * from msg order by dt desc第二个犬犬说了
      

  4.   

    如果
    msgid INT UNSIGNED NOT NULL PRIMARY KEY那么msgid的值是由你确定的,假定为后插入的为大,则
    select max(msgid) from msg其次只需
    select * from msg order by msgid desc
    则第一条记录即为值最大的
    而mysql_num_rows将返回记录数
      

  5.   

    更正select * from msg order by dt desc limit 0,1用max()的话怎么返回其他的相应字段呢?
      

  6.   

    你的表中的msgid不是自增长字段,比较麻烦。这样设计看来是因为msgid来自其它表的关联字段。那么就不能使用max(msgid)来取了,同时用order by msgid (desc) 也就不合理了。
    所以需要首先
    select count(*) from msg 得到总记录数目,假设100
    然后
    select * from msg limit 99,1
    这一句没有指定order by,它将按照数据的物理存储输出结果
      

  7.   

    如果表中有100条记录
    SELECT * FROM tA LIMIT 99, 1;也就是说你必须知道表中有多少条记录
      

  8.   

    哦,可我在php中用mysql_query()发送select count(*) from msg;
    却如何得到所要的记录数,并将它赋值给一个变量,比如$num
      

  9.   

    $result = mysql_query("select count(*) from msg");
    $num = mysql_result($result,0,'count(*));
      

  10.   

    1.select * from table order by id limit 1;2.$row=select count(*) from table;
      判断$row[0]