我用的vs2010+access2003,但是我想sql语句都是一样的。描述如下:
我有一个表,其中有一列是   XiangName
                            1.1.1
                            1.1.2
                            2.1.1
                            2.2.1
                            2.2.1.1
                            2.2.1.2
                            2.2.2
                            2.2.3
                            3.1.1
                            .....
我的问题是:我想用一个查询,按这种顺序显示,因为经过插入、删除之后,实际数据库中已经不是这个顺序了,如我现在删除了2.1.1行的数据,当我再次插入2.1.1时,确在表的最后,或者我新增了1.1.3项数据行,显示时想让其显示在1.1.2之后。(而在数据库中实际插入到了最后),麻烦请教。

解决方案 »

  1.   

    在ACCESS里不是太好弄.
    你一共有几级?
      

  2.   

    直接按这个字段排就OK了吧?试过么?结果是?
    不行的话试下select * from tb order by replace(XiangName,'.','')
      

  3.   

    mssql里应该直接排就可以了,只要每级里面都不大于10
      

  4.   

    试了一下,表达式中replace没有定义???
      

  5.   


    select * from tb order by XiangName
    --这个什么结果?
      

  6.   


    排一下序就好了
    我用的vs2010+access2003,但是我想sql语句都是一样的。描述如下:
    我有一个表,其中有一列是 XiangName
      1.1.1
      1.1.2
      2.1.1
      2.2.1
      2.2.1.1
      2.2.1.2
      2.2.2
      2.2.3
      3.1.1
      .....我的问题是:我想用一个查询,按这种顺序显示,因为经过插入、删除之后,
    实际数据库中已经不是这个顺序了,如我现在删除了2.1.1行的数据,
    当我再次插入2.1.1时,确在表的最后,或者我新增了1.1.3项数据行,
    显示时想让其显示在1.1.2之后。(而在数据库中实际插入到了最后),麻烦请教。
    if object_id('#tb') is not null 
      drop table #tb
    go
    create table #tb(name varchar(100))
    go
    insert into #tb
    select '1.1.1' union all
    select '1.1.2' union all
    select '2.1.1' union all
    select '2.2.1' union all
    select '2.2.1.1' union all
    select '2.2.1.2' union all
    select '2.2.1.2' union all
    select '2.2.2' union all
    select '2.2.3' union all
    select '3.1.1' select * from #tb
    group by name
    --我的问题是:我想用一个查询,按这种顺序显示,因为经过插入、删除之后,
    实际数据库中已经不是这个顺序了,如我现在删除了2.1.1行的数据,
    当我再次插入2.1.1时,确在表的最后,或者我新增了1.1.3项数据行,
    显示时想让其显示在1.1.2之后。(而在数据库中实际插入到了最后),麻烦请教。--//现在删除2.1.1
    delete #tb where name='2.1.1'
    --查看结果
    select * from #tb
    group by name
    --插入1.1.3
    insert into #tb values('1.1.3')
    --查看结果
    select * from #tb
    group by name
    --//最后结果
    name
    ----------------------------------------------------------------------------------------------------
    1.1.1
    1.1.2
    1.1.3
    2.2.1
    2.2.1.1
    2.2.1.2
    2.2.2
    2.2.3
    3.1.1(9 行受影响)
      

  7.   


    在access 里,要用 instr 反复取出各位,并转换成数值,然后用这些数值依次排序,比较麻烦,类似于:
    order by val(mid(XiangName,1,instr(XiangName,".")-1)),
    val(mid(XiangName,instr(XiangName,".")+1,instr(instr(XiangName,".")+1,XiangName,".")-instr(XiangName,".")))这儿是前两组,还有的话,得继续取后面各组.
      

  8.   

    ACCESS的还是去其他数据库版问问