Table:class
 
id          xueyuan
1            信息
2            信息
3            化材
4            化材
5            经贸现在我想通过SQL得到以下结果
 
xueyuan
信息
化材
经贸就是把原来class表中的不重复的学院找出来,但是必须根据id号升序来我自己原来写了这样: select distinct xueyuan
                     from class
但是得出的结果是:
xueyuan
化材
经贸
信息好像distinct会根据首个字母的顺序排的。
请教达人啊,谢谢!

解决方案 »

  1.   

    create table t(id int,xueyuan varchar(20))
    insert t select 1,'信息'
    union all select 2,'信息'
    union all select 3,'化材'
    union all select 4,'化材'
    union all select 5,'经贸'declare @s varchar(100)
    set @s='信息,化材,经贸'
    select xueyuan from t group by xueyuan
    order by charindex(','+xueyuan+',',','+@s+',')xueyuan              
    -------------------- 
    信息
    化材
    经贸(所影响的行数为 3 行)
      

  2.   

    问题是我在具体运用中的xueyuan这一行是动态添加的,每一次的数据会不一样,这样我要怎么样设置@s,希望可以直接用一个SQL语句实现就好了,不过还是谢谢楼上的朋友!
      

  3.   

    --try:
    select xueyuan from class a where not exists(select 1 from class where xueyuan=a.xueyuan and id>a.id) order by id
      

  4.   

    select xueyuan,min(ID) id  from class group by xueyuan order by ID
      

  5.   

    create table t(id int,xueyuan varchar(20))
    insert t select 1,'信息'
    union all select 2,'信息'
    union all select 3,'化材'
    union all select 4,'化材'
    union all select 5,'经贸'select min(id) as id ,xueyuan from t group by xueyuan order by id
      

  6.   

    if(object_id('master..t')is not null)
    drop table tcreate table t(id int,xueyuan varchar(20))
    insert t select 1,'信息'
    union all select 2,'信息'
    union all select 3,'化材'
    union all select 4,'化材'
    union all select 5,'经贸'
    select  xueyuan from t group by xueyuan order by min(id) drop table t结果:
    信息
    化材
    经贸
      

  7.   

    select xueyuan, min(id) from class group by xueyuan order by min(id)
    这样ok了!呵呵,谢谢上面的朋友热心解答!