表A内容如下:id   mc       prvid(0为一级)
1    内科         0
2    外科         0
3    内一科       1
4    外一科       2
5    内二科       1
6    内一科(门) 3
.......
要求通过SQL语句求出已知的上级科室名称,求它的所有下级及名称.
如内科及内科下面的所有分级的名称
要求的结果如下:
id    mc     
1     内科  
3     内一科
5     内二科
6     内一科(门)     

解决方案 »

  1.   

    id  mc      prvid(0为一级) 
    1    内科        0 
    2    外科        0 内科和外科都是0?
      

  2.   

    分级并不是以第一列id来分的。分级是以prvid来分的.如内一科属于内科下面的分级所以它的prvid为1
      

  3.   

    按你的
    select id, mc from 表A where mc like '内%'
    order by prvid
      

  4.   

    那你prvid为2或3又怎么理解呢?
    没有正确的定义
      

  5.   

    prvid 你可以这样定义
    一级   X00 如100
    二级   XX0 如110
    三级   XXX 如111
      

  6.   

    prvid 你可以这样定义 
    一级  X00 如100 内科  200 外科
    二级  XX0 如110 内一科 120 内二科  210 外一科
    三级  XXX 如111 内一科(门)
      

  7.   

    数据结构改成以下查询较为方便:id  mc      prvid(0为一级)  code
    1    内科        0           00001
    2    外科        0           00002
    3    内一科      1           0000100003
    4    外一科      2           0000200004
    5    内二科      1           0000100005
    6    内一科(门) 3          000010000300006