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的记录相等,因此只取其中一条,其它以次类推,请指教!! 更新了一下内容..
1 A001 001 A 22A 6 A006 k001 A 22A 7 A001 j001 A 22A --------------------- 为什么取j001而不是k001,什么依据?k还是在前的。
字典顺序 J 在 K 前吧! j在K前面呢,升序排列是指按name相同的话,按ID升序排列,然后取第一条(也就是有J,K的时侯,J要排在最前,K紧接之后,只有K的时侯,K排在前,没有JK的时侯,按升序排列(普通的order顺序),但null排在最后.举一个不知道合适不合适的例子,比如人的姓名一样,有重名的,但是身份有高低,所以这里把所有的ID变成身份最高的.
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
没有更新字段呀!并且select * 不能group by name ordy by name asc 吧!
10 null D
---------------
这句话需要解释一下
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的记录相等,因此只取其中一条,其它以次类推,请指教!!
更新了一下内容..
6 A006 k001 A 22A
7 A001 j001 A 22A
---------------------
为什么取j001而不是k001,什么依据?k还是在前的。
j在K前面呢,升序排列是指按name相同的话,按ID升序排列,然后取第一条(也就是有J,K的时侯,J要排在最前,K紧接之后,只有K的时侯,K排在前,没有JK的时侯,按升序排列(普通的order顺序),但null排在最后.举一个不知道合适不合适的例子,比如人的姓名一样,有重名的,但是身份有高低,所以这里把所有的ID变成身份最高的.
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