1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

如何查询到 数据库中最后注册的ID?

本帖由 xledoo2006-06-05 发布。版面名称:后端开发

  1. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    用什么语句得到最后注册ID呀?


    $lastid = $db->result($db->query("SELECT userid FROM members",$db),0,login_id);

    用这个查询到的怎么老是表中排在最上面的那个ID呀?
    而我的新注册的ID是往下排的!ID的序号是在增大的~
     
    #1 xledoo, 2006-06-05
    最后编辑: 2006-06-05
  2. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    SELECT Max(userid) AS u_id FROM members
     
    #2 小叶, 2006-06-05
    最后编辑: 2006-06-05
  3. 七星浪子

    七星浪子 New Member

    注册:
    2005-09-15
    帖子:
    444
    赞:
    7
    批准...
     
  4. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    OK~解决了!THANKS
     
  5. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    再问一个!!!
    按积分排名列出用户~~列出前5名!

    SELECT Max(jifen) AS u_id FROM members DESC LIMIT 5 ?
     
  6. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    SELECT * FROM members OEDER BY jifen LIMIT 5
     
  7. yeshou

    yeshou New Member

    注册:
    2005-09-06
    帖子:
    7,067
    赞:
    34
    坐汽车要带头盔么?
     
  8. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    估计是我写的那个MSSQL的类有问题~~SQL查询复杂点就抱错!

    Execute SQL: Query(SELECT Max(name) FROM member OEDER BY exp LIMIT 5,) failed.
     
  9. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    去看看sql操作语句吧,
     
  10. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    有没有个简单易懂的教程什么的?
     
  11. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    (1)数据记录筛选:
    select * from 数据表 where 字段名=字段值 order by 字段名 [desc]
    select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]
    select top 10 * from 数据表 where 字段名 order by 字段名 [desc]
    select * from 数据表 where 字段名 in ('值1','值2','值3')
    select * from 数据表 where 字段名 between 值1 and 值2

    (2) 更新数据记录:
    update 数据表 set 字段名=字段值 where 条件表达式
    update 数据表 set 字段1=值1,字段2=值2 字段n=值n where 条件表达式

    (3) 删除数据记录:
    delete from 数据表 where 条件表达式
    delete from 数据表(将数据表所有记录删除)

    (4) 添加数据记录:
    insert into 数据表 (字段1,字段2,字段3) values (值1,值2,值3)
    insert into 目标数据表 select * from 源数据表(把源数据表的记录添加到目标数据表)" response.Write "

    (5) 数据表的建立和删除:
    Create TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
    例:
    Create TABLE tab01(name varchar(50),datetime default now())

    ACCESS表的建立
    strsql = "create table tblactiveuser"&_
    "(ip varchar(30) not null, "&_
    "author_id integer, "&_
    "login datetime default now(),"&_
    "active datetime default now(), "&_
    "os varchar(15), "&_
    "Browser varchar(15), "&_
    "hide integer default 0, "&_
    "strwhere varchar(30) ,"&_
    "primary key (ip))"
    objconn.execute(strsql)

    Drop TABLE 数据表名称 (永久性删除一个数据表)

    (6)更改表格:
    Alter TABLE table_name ADD COLUMN column_name DATATYPE 说明:增加一个栏位(没有删除某个栏位的语法)。
    例:
    Alter TABLE distributors ADD COLUMN address VARCHAR(30); 向表中增加一个 VARCHAR 列
    alter table member add column int default 0 增加一个长整形的列,默认值为0
    bit 代表"是否"类型

    对现存列改名:Alter TABLE distributors RENAME COLUMN address TO city;
    对现存表改名:Alter TABLE distributors RENAME TO suppliers;

    更改列类型:
    Alter TABLE table_name MODIFY column_name datatype
    Alter TABLE table_name CHANGE column_name new_column_name datatype CHANGE 还可以一起改列名
    Alter TABLE table_name ADD PRIMARY KEY (column_name)说明:更改表得的定义把某个栏位设为主键。
    Alter TABLE table_name Drop PRIMARY KEY (column_name)说明:把主键的定义删除。

    (7)、建立索引:
    Create INDEX index_name ON table_name (column_name) 说明:对某个表格的栏位建立索引以增加查询时的速度。

    (8) 数据记录统计函数:
    AVG(字段名) 得出一个表格栏平均值
    COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计
    MAX(字段名) 取得一个表格栏最大的值
    MIN(字段名) 取得一个表格栏最小的值
    SUM(字段名) 把数据栏的值相加
    引用以上函数的方法:
    sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
    set rs=conn.excute(sql)
    用 rs("别名") 获取统的计值,其它函数运用同上。

    (9) 记录集对象的方法:
    rs.movenext 将记录指针从当前的位置向下移一行
    rs.moveprevious 将记录指针从当前的位置向上移一行
    rs.movefirst 将记录指针移到数据表第一行
    rs.movelast 将记录指针移到数据表最后一行
    rs.absoluteposition=N 将记录指针移到数据表第N行
    rs.absolutepage=N 将记录指针移到第N页的第一行
    rs.pagesize=N 设置每页为N条记录
    rs.pagecount 根据 pagesize 的设置返回总页数
    rs.recordcount 返回记录总数
    rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
    rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
    rs.delete 删除当前记录,但记录指针不会向下移动
    rs.addnew 添加记录到数据表末端
    rs.update 更新数据表记录

    smallint 16 位元的整数。
    interger 32 位元的整数。
    decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
    float 32位元的实数。
    double64位元的实数。
    char(n) n 长度的字串,n不能超过 254。
    varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
    graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
    vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
    date 包含了 年份、月份、日期。time 包含了 小时、分钟、秒。timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
     
  12. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    差不多了:(
     
  13. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    呵呵~~
    可是没有LIMIT的用法~
     
  14. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    mssql没有limit函数,
    只能使用top
     
  15. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    能不能给个例子?

    SELECT top10(userid) AS u_id FROM members ??
     
  16. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    我用SELECT TOP 5 name FROM member order by exp 抽取了5条以exp为排名的信息~
    不知道这样写对不对???
     
  17. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    你都是 order by exp 当然是exp
     
  18. xledoo

    xledoo New Member

    注册:
    2005-11-15
    帖子:
    109
    赞:
    0
    可我这样写exp是从小到大排序的~~怎么能从大到小呀?
     
  19. udbiyt

    udbiyt New Member

    注册:
    2006-05-21
    帖子:
    4
    赞:
    0
    呵呵 学习了