select num,id,name from tablea order by name,id

解决方案 »

  1.   

    lxzm1001,要是那样简单我就不来问了,最后两段你没看吧!!
      

  2.   

    有两个num,两个id,两个name?
      

  3.   

    右边是结果?但我看左边num=10的id是NULL,右边却是004?
      

  4.   

    右边是结果的,我想要的就是这个效果,NULL是排序的最后,也就是说相同的name如果有多个出现,一般情况下,升序排(但null排最后),取最前.   所以id都变为符合上述条件的ID(004)4    004    D
    10   null   D
      

  5.   

    看id值的第一位是否是j或k(如果j,k都有,升序取前),如果不为j,k升序取前
    ---------------
    这句话需要解释一下
      

  6.   

    tableA 
    seq num id name value 
    1 A001 001 A 22A 
    2 A001 002 B 22B 
    3 A003 003 C 22A 
    4 A004 004 D 22C 
    5 A005 005 E 22D 
    6 A006 k001 A 22A 
    7 A001 j001 A 22A 
    8 A002 k002 B 22C 
    9 A007 j003 C 22J 
    10 A008 null D 22K 
    11 A009 a005 E 22M 
    1.name值相同的看id值的第一位是否是j或k,如果是,把所有的该name值的id值变为含有j,k的id值(如不含的情况下,升序排列,取最前的id值进行设置)
    2.num,id,value字段值相同,取其中一个.
    3.按num,name进行排序变换及更新后
    seq num id name value 
    1 A001 j001 A 22A
    2 A001 k002 B 22B
    3 A002 k002 B 22C
    4 A003 j003 C 22A
    5 A004 004 D 22C
    6 A005 a005 E 22D
    7 A006 j001 A 22A
    8 A007 j003 C 22J
    9 A008 004 D 22K
    10 A009 a005 E 22M
    A的ID有(001,k001,j001)->取j001,D的ID为(004,null)->null排最后->004;当把SEQ=1记录中的ID变为j001时,就与SEQ=7的记录相等,因此只取其中一条,其它以次类推,请指教!!
    更新了一下内容..
      

  7.   

    1 A001 001 A 22A
    6 A006 k001 A 22A
    7 A001 j001 A 22A
    ---------------------
    为什么取j001而不是k001,什么依据?k还是在前的。
      

  8.   

    字典顺序 J 在 K 前吧!
    j在K前面呢,升序排列是指按name相同的话,按ID升序排列,然后取第一条(也就是有J,K的时侯,J要排在最前,K紧接之后,只有K的时侯,K排在前,没有JK的时侯,按升序排列(普通的order顺序),但null排在最后.举一个不知道合适不合适的例子,比如人的姓名一样,有重名的,但是身份有高低,所以这里把所有的ID变成身份最高的.
      

  9.   

    select * from tableA  where left(id,1)=j group by name ordy by name asc 
    union 
    select * from tableA  where left(id,1)=k group by name ordy by name asc 
    union
    select * from tableA  where left(id,1)!=j and left(id,1)!=k group by name ordy by name asc
      

  10.   

    没有更新字段呀!并且select * 不能group by name ordy by name asc 吧!