有一个语句
select  distinct top 3  Name,orderflag from SD order by orderflag asc输出数据
name     orderflag
d        1
c        2
b        3另一个表中也有name这个字段,并且不会有重复等问题如果不需要根据第一条语句进行排序搜出来的是这样的SELECT name  FROM C where id in 
(select id from C where seid=37)
 name   seid 
  b       37
  c       37
  d       37可是我现在的问题是要根据第一条输出的name对第二条返回的结果集进行排序
让他的name和第一条结果集的一样(重复、个数不同、名称不同不考虑)
输出应该是
 name   seid 
  d       37
  c       37
  b       37请前辈指导

解决方案 »

  1.   

    declare @t table(name char(1),orderflag  int)
    insert @t select 'd',1 
    insert @t select 'c',2 
    insert @t select 'b',3 declare @tb table(name char(1),seid int)
    insert @tb select 'b',37 
    insert @tb select 'c',37 
    insert @tb select 'd',37 select * from @tbselect b.*
    from @tb b
    left join @t a on a.name = b.name
    order by a.orderflag/*
    name seid        
    ---- ----------- 
    b    37
    c    37
    d    37(所影响的行数为 3 行)name seid        
    ---- ----------- 
    d    37
    c    37
    b    37(所影响的行数为 3 行)
    */
      

  2.   


    select
    SD.name, C.seid
    from
    SD inner join C
    on SD.name = C.name
    where
    C.seid = 37
    order by
    SD.orderflag