补充说明一下,http://community.csdn.net/Expert/topic/4493/4493233.xml?temp=.2904016
贴子中的数据是为了说明此排序的规则自已编写的,真实的数据库中有大量的数据,而且对排序规则再次说明为
排序规则:
在表中把所有数据分为三类:
name_type=1的是按首字母排序,先排英文,再排以英文开头+中文,最后排中文,名字完全相同的排在一起(排在一起的ID是从大到小,对于英文和以英文开头的第一个字符相同的排在一起时,ID是从小到大)
name_type=2的是按ID从小到大,名字完全相同的排在一起,ID是从大到小,但是名字中第一个汉字相同的排在一起(排在一起的ID是从大到小)
name_type=3的是按第一个数字是从0-9排,名字完全相同的排在一起,ID是从大到小,第一个字符相同的排在一起时,ID是从小到大
name_subtype中的1表示英文,2表示以英文开头+中文,3中文请你一定要帮忙,在下非常感激你。谢谢!
贴子中的数据是为了说明此排序的规则自已编写的,真实的数据库中有大量的数据,而且对排序规则再次说明为
排序规则:
在表中把所有数据分为三类:
name_type=1的是按首字母排序,先排英文,再排以英文开头+中文,最后排中文,名字完全相同的排在一起(排在一起的ID是从大到小,对于英文和以英文开头的第一个字符相同的排在一起时,ID是从小到大)
name_type=2的是按ID从小到大,名字完全相同的排在一起,ID是从大到小,但是名字中第一个汉字相同的排在一起(排在一起的ID是从大到小)
name_type=3的是按第一个数字是从0-9排,名字完全相同的排在一起,ID是从大到小,第一个字符相同的排在一起时,ID是从小到大
name_subtype中的1表示英文,2表示以英文开头+中文,3中文请你一定要帮忙,在下非常感激你。谢谢!
a.*
from
#ADN a
order by
a.name_type,
a.first_pinyin,
a.name_subtype,
case a.name_type when 3 then left(a.name,1) end,
(select min(id) from #ADN where left(name,1)=left(a.name,1)),
(select min(id) from #ADN where name=a.name),
a.ID desc